-
Android LocalDate/Time(안드로이드 날짜/시간 관련 메서드)Android/Usage 2019. 10. 24. 16:23
안녕하세요. 오늘은 안드로이드 내에서 날짜/시간 관련한 메서드 사용법에 대해 알아보겠습니다!
LocalDate, LocalTime, LocalDateTime 이 세 가지가 있습니다.
이들은 자바 언어를 쓰는 환경에서는 다 통용됩니다! 왜냐면 java.time 이라는 패키지에 들어있기 때문이죠.
한 번 각각 써 봅시다! (Kotlin입니다. 그리고 API 22이상만 된다는 군요!)
기본 호출
Local 함수들 각 결과 기본적으로 다 .now() 를 찍으면 현재 날짜/시간을 보여줍니다.
(뒤에 .toString()은 그냥 로그에 출력하기 위해 문자열로 바꿔주는 겁니다! 로그는 문자열만 인자로 받거든요...)
LocalTime
시간만 표시합니다. 형식은 HH:mm:ss 입니다!
LocalDate
날짜만 표시합니다. 형식은 YYYY-MM-DD 입니다!
LocalDateTime
위 두개의 짬뽕입니다. 형식은 YYYY-MM-DDTHH:mm:ss 입니다! (공백을 T로 표기하는군요!)
이 세 가지는 그냥 표기법만 다를 뿐, 사용법은 다 똑같습니다. LocalTime하고 LocalDate하고 쓰는 함수가 다르다던가 그러지는 않습니다!
여러 사용법을 보겠습니다.
testTime = 15시 30분 / testDate = 2019년 5월 3일 출력 결과 기본적으로 .of()을 이용해서 직접 날짜/시간을 만들 수 있습니다.
그리고 년, 월, 일, 시간 등등 불러오는 방법이 존재하는데, 조금 유의해야 할 점이 있습니다.
바로 월을 가져오기 위해서 그냥 .month를 하면 안되고, .monthValue
그리고 일을 가져오기 위해 .day 하면 안되고, .dayOfMonth 를 써야 일반적인 날짜들이 나옵니다.
위를 보시면 알겠지만, 영문자(Jan, Feb...) 표기의 .month, 그리고 일주일의 영문자 표기(Mon, Tue...)인 .dayOfWeek 등 다양한 표현 방식이 있습니다.
dayOfYear()은 말 그대로 1년에 몇 번째 일인지를 나타내는 함수군요...(365일 중)
withDayOfYear()은 day를 입력받아 day만 바꾸는 함수네요! (2019년 5월 3일 -> 2019년 5월 7일)
이 외에도 많지만 필요할 때 찾아 쓰도록 하세요(?)타입 변환
참고로 위에 나온 날짜/시간들은 다 각자의 객체로 데이터 타입을 갖고 있습니다.
예를 들어, '2019-05-03' 라고 나온다 해도 데이터 타입은 LocalDate 입니다.
하지만 우리는 문자열로 쓰일 경우가 많고, -와 같은 구분자(ex. 2019-05-03) 말고 다른것도 쓰고 싶을 수 있습니다.
예시를 들겠습니다!
위 이미지를 보시면, 첫 번째 로그(.parse 함수 쓴곳)이
문자열 ▶ LocalDateTime 변환
하는 코드입니다.
여기서 주의할 점은 꼭 저 양식대로 써주지 않으면 에러가 납니다...
- Date: -
- 띄어쓰기: T
- Time: :
로 나누어야만 합니다.
물론 내 맘대로 양식(띄어쓰기를 T말고 다른거로 등등)을 바꾸는 방법이 있습니다. .parse 함수의 2번째 인자로 저 2번째 로그 처럼
DateTimeFormatter.ofPattern()로 아예 양식을 정의해 주는 방식이 있습니다. 하지만 잘 안쓰게 되더라구요...
예를 들어
LocalDateTime.parse("2019-05-03ㅎㅇ12:30:00", DateTimeFormatter.ofPattern("yyyy-MM-ddㅎㅇHH:mm:ss")
이런 식입니다.
두 번째 로그가
LocalDateTime ▶ 문자열 변환
하는 코드입니다.
사용법은 이미지 그대로입니다.
정리 하자면,
LocalDateTime.parse(문자열A) == 문자열A를 LocalDateTime으로 바꿀꺼야!
날짜데이터B.format(포맷C) == 날짜데이터B를 포맷C 형식의 문자열로 바꿀꺼야!
단, 주의할 점은 저 영어들의 대소문자에 따라 의미가 바뀌게 됩니다!
MM과 mm을 보시면 Month와 minute을 의미하게 됩니다.
위 처럼 y(년도)는 대소문자 상관이 없는데, 일을 뜻하는 d는 대문자 D로 쓰니 dayOfYear의 의미를 갖게 되더군요!
(365일 중 몇일)
글이 좀 난잡하지만 읽어주셔서 감사합니다!
'Android > Usage' 카테고리의 다른 글
Android Fragment Usage(안드로이드 프래그먼트 사용법) (0) 2019.10.21 [Android Studio]How to use pre-populated .db file in Room(미리 만든 db파일, 앱에서 local로 쓰기) (1) 2019.07.21