ABOUT ME

다람쥐는 곰을 잡는다.

Today
Yesterday
Total
  • 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 형식의 문자열로 바꿀꺼야!


     

    단, 주의할 점은 저 영어들의 대소문자에 따라 의미가 바뀌게 됩니다!

     

    MMmm을 보시면 Monthminute을 의미하게 됩니다.

     

     

    위 처럼 y(년도)는 대소문자 상관이 없는데, 일을 뜻하는 d는 대문자 D로 쓰니 dayOfYear의 의미를 갖게 되더군요!

    (365일 중 몇일)

     

     

     

     

    글이 좀 난잡하지만 읽어주셔서 감사합니다!

    댓글

Designed by Tistory.