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.