Работа с дати в Котлин

1. Въведение

В този бърз урок ще научим за работата с дати в Kotlin.

Ще разгледаме операции, свързани с Дата , като създаване, форматиране и манипулиране на дати.

2. Създаване на дата

Най-бързият начин да се създаде Дата обект използва LOCALDATE е синтактична () метод:

var date = LocalDate.parse("2018-12-12")

Методът parse () по подразбиране използва стандартния формат на дата yyyy-MM-dd .

Можем също да предадем наш собствен формат, за да анализираме низ от дата:

var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") var date = LocalDate.parse("31-12-2018", formatter)

И, ако имаме нужда от по-голям контрол можем да укажете изрично година , ден и месец , използвайки LOCALDATE е на () метод :

var date = LocalDate.of(2018, 12, 31)

3. Форматиране на дата

След това нека разгледаме как можем да форматираме обектите си с дата обратно в Strings .

Начинът на форматиране по подразбиране Date, използвайки формата по подразбиране в Kotlin, е извикването на метода toString () .

Нека създадем дата

var date = LocalDate.parse("2018-12-31")

и погледнете изхода по подразбиране за използване на toString :

assertThat(date.toString()).isEqualTo("2018-12-31")

Това изглежда четимо, тъй като изходният формат е гггг-ММ-дд , но отново може да се наложи да форматираме датата в персонализирани формати в зависимост от нашите случаи на употреба.

За да форматирате нашата дата в различни формати можем да използваме LOCALDATE е (формат) метод и предлагането, за да го нашия обичай формат с помощта DateTimeFormatter :

var formatter = DateTimeFormatter.ofPattern("dd-MMMM-yyyy") var formattedDate = date.format(formatter)

Това извежда добре форматирана дата:

assertThat(formattedDate).isEqualTo("31-December-2018")

4. Извличане на компоненти за дата

LocalDate предоставя много методи, които можем да използваме за извличане на конкретни компоненти от Date.

Някои от тях са доста тривиални, като например извличане на годината, месеца или деня от дата :

var date = LocalDate.parse("2018-12-31") assertThat(date.year).isEqualTo(2018) assertThat(date.month).isEqualTo(Month.DECEMBER) assertThat(date.dayOfMonth).isEqualTo(31)

Можем да извлечем и друга информация като e ra , d ayOfTheWeek или d ayOfTheMonth :

assertThat(date.era.toString()).isEqualTo("CE") assertThat(date.dayOfWeek).isEqualTo(DayOfWeek.MONDAY) assertThat(date.dayOfYear).isEqualTo(365)

5. Работа с период

И накрая, нека да разгледаме работата с Periods в Kotlin.

Периодите представляват разстояние по времевата линия. Ние можем да създадем Период използване Период метод фабрика клас е:

var period = Period.of(1, 2, 3)

Това създава Период от 1 година, 2 месеца и 3 дни.

За да добавите този период към съществуваща дата, ние използваме LOCALDATE е плюс () метод:

var date = LocalDate.of(2018, 6, 25) var modifiedDate = date.plus(period)

Това ще добави 1 година, 2 месеца и 3 дни към дадената дата и ще доведе до променената дата:

assertThat(modifiedDate).isEqualTo("2019-08-28")

По същия начин можем да извадим Период от дадена дата:

var date = LocalDate.of(2018, 6, 25) var modifiedDate = date.minus(period)

И както се очаква, променената дата ще бъде:

assertThat(modifiedDate).isEqualTo("2017-04-22")

Също така, можем да използваме Периоди, за да представим разстоянието между две дати.

Да предположим, че имаме две дати, точно 6 месеца една от друга:

var date1 = LocalDate.parse("2018-06-25") var date2 = LocalDate.parse("2018-12-25")

Сега, ние може да представлява разстоянието между тези две дати, използващи Период на между метод:

var period = Period.between(date1, date2)

В период променливата ще произвежда следното :

assertThat(period.toString()).isEqualTo("P6M")

P означава Период, а 6M означава 6 месеца.

6. Заключение

В тази статия научихме основите на това как да работим с дати в Kotlin.

Разгледахме как да създаваме екземпляри за дата с помощта на различни методи и как да форматираме обектите с дати обратно в четливи текстове.

Освен това разгледахме как да извлечем компоненти от Date обекти и накрая как да работим с Periods в Kotlin.

Кодът, използван в този урок, е достъпен в GitHub.