Trabalhando com datas no Kotlin

Trabalhando com datas no Kotlin

1. Introdução

Neste tutorial rápido, aprenderemos como trabalhar com datas em Kotlin.

Estaremos olhando paraDate- operações relacionadas, como criação, formatação e manipulação de datas.

2. Criação de uma data

A maneira mais rápida de criar um objetoDate é usando o métodoLocalDate'sparse():

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

O métodoparse() por padrão usastandard date formatyyyy-MM-dd.

Também podemos passar nosso próprio formato para analisar uma string de data:

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

E, se precisarmos de mais controle, podemosexplicitly specify the year, day and month using LocalDate‘s of() method:

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

3. Formatando uma Data

A seguir, vamos ver como podemos formatar nossos objetos de data de volta paraStrings.

A maneira padrão de formatar a Data usando o formato padrão emKotlin  é invocartoString() method.

Vamos criar uma data

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

e observe a saída padrão de usartoString:

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

Isso parece legível, pois o formato de saída éyyyy-MM-dd, mas, novamente, podemos precisar formatar a data para formatos personalizados, dependendo de nossos casos de uso.

To format our date to different formats we can use LocalDate‘s format() methode forneça nosso formato personalizado usandoDateTimeFormatter:

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

Isso gera uma data bem formatada:

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

4. Extraindo Componentes de Data

LocalDate oferece muitos métodos que podemos usar para extrair componentes específicos deDate.

Alguns deles são bastante triviais, como extrair o ano, mês ou dia de umDate:

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

Também podemos extrair outras informações como era, dayOfTheWeek ou dayOfTheMonth:

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

5. Trabalhando comPeriod

Por fim, vamos analisar como trabalhar comPeriods em Kotlin.

Os pontos representam uma distância na linha do tempo. Podemos criar umPeriod usando o método de fábrica de classe dePeriod:

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

Isso cria umPeriod de 1 ano, 2 meses e 3 dias.

Para adicionar estePeriod a uma data existente, usamos o métodoLocalDate'splus() :

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

Isso adicionará 1 ano, 2 meses e 3 dias à data especificada e produzirá a data modificada:

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

Da mesma forma, podemos subtrairPeriod  de uma determinada data:

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

E como esperado, a data de modificação será:

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

Além disso, podemos usar Períodos para representar a distância entre duas datas.

Suponhamos que temos duas datas, exatamente 6 meses de diferença uma da outra:

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

Agora, podemos representar a distância entre essas duas datas usando o métodobetween do período:

var period = Period.between(date1, date2)

A variávelperiod produzirá o seguinte:

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

P representaPeriode6M ignifica 6 meses.

6. Conclusão

Neste artigo, aprendemos o básico de como trabalhar com datas no Kotlin.

Examinamos como criar instâncias de data usando vários métodos e como formatar objetos de data novamente em textos legíveis.

Além disso, examinamos como extrair componentes de objetosDate e, finalmente, como trabalhar comPeriods em Kotlin.

O código usado neste tutorial está disponívelover on Github.