일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- #android #안드로이드 #glide #gif #이미지다운로드
- 사용법
- 클린아키텍쳐
- 안드로이드
- MVVM
- 레트로핏
- 안드로이드 아키텍쳐
- 메모리릭
- 안드로이드 메모리릭
- #리사이클러뷰 어댑터
- retrofit
- 안드로이드해상도
- #ContentProvider #App DataShare
- zeplin
- 빗버킷 #bitbucket #authorization failed #깃
- 안드로이드 익명클래스
- #안드로이드 개발자 #안드로이드 신입 #개발자 이직 #안드로이드 면접 #신입 개발자
- 키스토어
- #안드로이드
- 리사이클러뷰 체크박스
- 구글맵안돼요
- #SMS API #안드로이드 SMS #SMS Retriever
- retrofi
- 제플린
- retrofit2
- #리사이클러뷰
Archives
- Today
- Total
땀이 삐질삐질 나는 개발 일기
SimpleDateFormat 과 Calendar대신 Joda Time 본문
안녕하세요. 삐질삐질 개발하는 개발자 삐질입니다.
오늘은 날짜로직을 다루다 보면, 심심치 않게 SimpleDateFormat 과 Calendar를 많이 쓰게되는데
이때 SimpleDateFormat의 위험성 및 단점을 알려드리고 또 대체제를 알려드리고자 합니다.
SimpleDateFormat api의 위험성이란?
- 쓰기 어렵다.
- Thread - non Safe하다.
자 여기서 1. 쓰기 어렵다.(?)는 다들 아실거라 생각해서 넘어가도록 하겠습니다.
2.Thread - non Safe하다. 는 무슨말일까요??
사실 SingleThread 작업을 하시는 분들께는 큰 의미가 없는 이야기입니다.
다만, MultiThread작업을 하시는 분들은 SimpleDateFormat를 쓰다보면 종종 ArrayIndexOutOfBoundsException Exception을 만나게됩니다.
ThreadSafe하지 않은 요인(타이밍 이슈라던지, 락킹등) + 기타 요인들로 인해
뭐 정말정말 간략히 설명하자면, 내가 일 하고있는데 옆 사람이 끼어들어서 제 일을 방해함으로, 제가 전혀 예상치 못한 결과가 나오게 되는!?
( 뮤텍스, 세마포어, 크리티컬 섹션, 모니터, 쓰레드 공유메모리 등) 운영체제 쪽의 지식입니다만 이쪽의 내용을 공부하시면 자세히 알수 있습니다.
따라서 이 SimpleDateFormat 대신, 저는 JodaTime을 추천하고자 합니다.
- Dependency
implementation 'joda-time:joda-time:2.10.2'
위와 같이 추가해준 뒤, 아래와 같이 사용할 수 있습니다.
사용법이 매우 직관적이므로 간편하게 사용할 수 있고, 무엇보다 MultiThread 작업 시, Thread Safe합니다.
DateTime dateTime = DateTime.now();
System.out.println(dateTime.toString("yyyy-MM-dd")); //패턴을 지정할 수 있음.
System.out.println(dateTime.toString());
dateTime= dateTime.plusDays(1);
dateTime = dateTime.plusYears(1);
dateTime = dateTime.minusDays(1);
dateTime = dateTime.minusYears(1);
dateTime = dateTime.withTime(15,0,0,0); // 시간 3시 0분 0초 (0)
- 번외로 Apache의 FastDateFormat도 있으니 참고하시면 좋을 것 같습니다.
안드로이드 초보 개발자를 위해 아래와 같은 카카오 오픈톡을 운영 중입니다.
'개발 Tip' 카테고리의 다른 글
BuildConfig 이용해서 Debug와 Release 모드의 같은 변수 다른 값 사용하기 (0) | 2019.06.14 |
---|---|
Android 나만의 모듈 만들어 쓰기 (0) | 2019.06.08 |
ConstraintLayout 원형 배치 (0) | 2019.06.05 |
Recyclerview Databinding 코드 예제 (0) | 2019.06.04 |
Android EditText 상황에 따라 키보드 컨트롤 (0) | 2019.05.27 |
Comments