Правильная работа с датами в Kotlin

Привет %username%! Сегодня мы рассмотрим несколько способов работы с датами в Kotlin: создание, форматирование, управление и т.д. Урок рассчитан на начинающего пользователя, уже знакомого с основами Kotlin.

Как создать дату в Kotlin?

Итак, для создания даты тебе потребуется объект LocalDate и его метод parse(). Он по дефолту пользует базовый шаблон даты yyyy-MM-dd (год, месяц, день)

val myDate = LocalDate.parse("2020-12-12")

Но формат вывода даты можно изменить на свой, для этого можно воспользоваться методом ofPattern() класса DateTimeFormatter

val formatDate = DateTimeFormatter.ofPattern("dd-MM-yyyy")
val date = LocalDate.parse("31-12-2020", formatDate)

Кроме того, если ты захочешь напрямую изменить форматирование даты, то можно воспользоваться методом of() у LocalDate

val myDate = LocalDate.of(2020, 10, 20)

Преобразование даты в текст Kotlin

Итак, теперь осуществим обратный процесс, а именно превратим дату в текст в Котлин. Воспользуемся функцией toString(), дабы получить результат. Создаем переменную myDate и используем уже хорошо известный способ LocalDate.parse()

val myDate = LocalDate.parse("2020-11-30")

а сейчас посмотрим что нам выведет метод toString():

assertThat(myDate.toString()).isEqualTo("2020-11-30")

Отлично, мы получили результат, но что если мы хотим изменить шаблон вывода на свой? Чтобы изменить шаблон даты в Kotlin нам понадобится объект DateTimeFormatter и его метод format() которому мы и передадим ему строку с шаблоном:

val template = DateTimeFormatter.ofPattern("dd-MMMM-yyyy")
val templateDate = date.format(template)

Получаем вполне себе читаемую понятную строку:

assertThat(formattedDate).isEqualTo("30-November-2020")

Kotlin — получаем свойства LocalDate

LocalDate дает пользователю множество простых инструментов, дабы получить свойства — месяц, год, день и даже эру. Полностью обо всех методах работы с датами можно почитать тут.

val myDate = LocalDate.parse("2020-11-30")

assertThat(myDate.year).isEqualTo(2020)
assertThat(myDate.month).isEqualTo(Month.NOVEMBER)
assertThat(myDate.dayOfMonth).isEqualTo(30)
assertThat(myDate.era.toString()).isEqualTo("CE")

Выводы

Итак, мы рассмотрели основные приемы по работе с датой в Kotlin: преобразование даты в текст и обратно,  как получить дни недели и другие свойства у даты.

Взаимодействие и создание дат в Kotlin не сильно отличается от таковой в Java, поэтому все приемы и способы работы с датами в Kotlin можно легко получить, прочитав руководство по работе с датами в Java.

Удачи в освоении Kotlin!

Ответить

Ваш адрес email не будет опубликован.