Kotlin : Comment gérer la date et l’heure ?

A la suite de mes derniers billets à propos du langage de programmation Kotlin dans lesquels je présentais les 10 raisons de choisir Kotlin pour développer vos applications et comment créer votre première application avec Kotlin, je vais vous démarrer une série de tutoriels et de snippets pour vous accompagner dans la prise en main de ce langage de programmation.

Pour démarrer, nous allons nous pencher sur la gestion des dates avec les exemples suivants :

Convertir une chaîne de caractères en date

  • Convertir une chaîne de caractères en date à l’aide de formateurs prédéfinis
  • Convertir une chaîne de caractères en date à l’aide d’un pattern formateur

Obtenir la date et l’heure actuelles

  • Obtenir la date et l’heure actuelles dans le format par défaut
  • Obtenir la date et l’heure actuelles avec un pattern
  • Obtenir l’heure de la date actuelle à l’aide de constantes prédéfinies
  • Obtenir l’heure de la date actuelle localisée

Additionner deux dates

Convertir une chaîne de caractères en date

Convertir une chaîne de caractères en date à l’aide de formateurs prédéfinis

Dans ce programme, vous apprendrez à convertir les chaînes de caractères en date en utilisant le formateur.

import java.time.LocalDate
import java.time.format.DateTimeFormatter

fun main(args: Array<String>) {
    // Format y-M-d or yyyy-MM-d
    val string = "2017-07-25"
    val date = LocalDate.parse(string, DateTimeFormatter.ISO_DATE)
    
    println(date)
}

Lorsque vous exécutez le programme, la sortie sera :

2017-07-25

Dans le programme ci-dessus, nous avons utilisé le formatteur prédéfini ISO_DATE qui prend les chaînes de date au format 2017-07-25 ou 2017-07-25+05:45′.

La fonction parse() de LocalDate analyse la chaîne donnée en utilisant le formateur donné. Vous pouvez également supprimer le formateur ISO_DATE dans l’exemple ci-dessus et remplacer la méthode parse() par :

LocalDate date = LocalDate.parse(string, DateTimeFormatter);

 

Convertir une chaîne de caractères en date à l’aide d’un pattern formateur

import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.util.Locale

fun main(args: Array<String>) {
    val string = "July 25, 2017"
    val formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH)
    val date = LocalDate.parse(string, formatter)
    
    println(date)
}

Lorsque vous exécutez le programme, la sortie sera :

2017-07-25

Dans le programme ci-dessus, notre date est dans le format MMMMM j, aaaaa. Ainsi, nous créons un formateur du pattern donné.

Maintenant, nous pouvons analyser la date en utilisant la fonction LocalDate.parse() et obtenir l’objet LocalDate.

Obtenir la date et l’heure actuelles

Dans ce programme, vous apprendrez à obtenir la date et l’heure actuelles dans différents formats avec Kotlin.

Obtenir la date et l’heure actuelles dans le format par défaut

import java.time.LocalDateTime

fun main(args: Array<String>) {

    val current = LocalDateTime.now()
    
    println("Current Date and Time is: $current")
}

Lorsque vous exécutez le programme, la sortie sera :

Current Date and Time is: 2017-08-02T11:25:44.973

Dans le programme ci-dessus, nous avons défini un modèle de format Année-Mois-Jour Heures:Minutes:Secondes.millisecondes en utilisant un objet DateTimeFormatter.

Ensuite, nous avons utilisé la méthode format() de LocalDateTime pour utiliser le formateur donné. Ceci nous donne la sortie de la chaîne de caractères formatée.

Obtenir la date et l’heure actuelles avec un pattern

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun main(args: Array<String>) {
    val current = LocalDateTime.now()
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")
    val formatted = current.format(formatter)

    println("Current Date and Time is: $formatted")
    
}

Lorsque vous exécutez le programme, la sortie sera :

Current Date and Time is: 2017-08-02 11:29:57.401

Dans le programme ci-dessus, nous avons défini un modèle de format Année-Mois-Jour Heures:Minutes:Secondes.millisecondes en utilisant un objet DateTimeFormatter.

Ensuite, nous avons utilisé la méthode format() de LocalDateTime pour utiliser le formateur donné. Ceci nous donne la sortie de la chaîne de caractères formatée.

Obtenir l’heure de la date actuelle à l’aide de constantes prédéfinies

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun main(args: Array<String>) {

    val current = LocalDateTime.now()
    val formatter = DateTimeFormatter.BASIC_ISO_DATE
    val formatted = current.format(formatter)

    println("Current Date is: $formatted")
    
}

Lorsque vous exécutez le programme, la sortie sera :

Current Date is: 20170802

Dans le programme ci-dessus, nous avons utilisé une constante de format prédéfinie BASIC_ISO_DATE pour obtenir la date ISO actuelle en sortie.

Obtenir l’heure de la date actuelle localisée

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.format.FormatStyle

fun main(args: Array<String>) {

    val current = LocalDateTime.now()
    val formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
    val formatted = current.format(formatter)
    
    println("Current Date is: $formatted")
}

Lorsque vous exécutez le programme, la sortie sera :

Current Date is: Aug 2, 2017 11:44:19 AM

Dans le programme ci-dessus, nous avons utilisé un média de style localisé pour obtenir la date et l’heure actuelles dans le format donné. Il y a aussi d’autres styles : Complet, long et court.

Additionner deux dates

Dans cet exemple, vous apprendrez à ajouter deux dates à l’aide de Calendar.

Depuis, l’époque Java des années 1970, n’importe quelle date représentée dans un objet Date ne fonctionnera pas. Cela signifie que vos Dates commenceront à partir de 1970 et que lorsque deux objets Date sont ajoutés, la somme sera amputée de1970 années.

Donc, nous utilisons Calendar pour régler ce soucis.

import java.util.Calendar

fun main(args: Array < String > ) {

    val c1 = Calendar.getInstance()
    val c2 = Calendar.getInstance()
    val cTotal = c1.clone() as Calendar

    cTotal.add(Calendar.YEAR, c2.get(Calendar.YEAR))
    cTotal.add(Calendar.MONTH, c2.get(Calendar.MONTH) + 1) // Zero-based months
    cTotal.add(Calendar.DATE, c2.get(Calendar.DATE))
    cTotal.add(Calendar.HOUR_OF_DAY, c2.get(Calendar.HOUR_OF_DAY))
    cTotal.add(Calendar.MINUTE, c2.get(Calendar.MINUTE))
    cTotal.add(Calendar.SECOND, c2.get(Calendar.SECOND))
    cTotal.add(Calendar.MILLISECOND, c2.get(Calendar.MILLISECOND))

    println("${c1.time} + ${c2.time} = ${cTotal.time}")

}

J’espère que ces exemples vous aideront à mieux comprendre à mieux gérer les dates et le temps avec Kotlin. N’hésitez pas à ajouter vos commentaires ou questions ci-dessous, je me ferai un plaisir d’y répondre.

 

 

 

 

Claude BUENO

Passionné par la Transformation digitale et l'Évolution des Systèmes d’Information. Intérêt pour le Management, le Marketing et l'Entrepreneuriat. Je blogue depuis 2008 sur les sujets numériques. Je suis fan de Star Wars, Vikings et Game of Thrones. J'habite à Tours.

You may also like...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.