Convertir entre chaîne et horodatage

Convertir entre chaîne et horodatage

1. Vue d'ensemble

Timestamp est l'un des rares objets date-heure hérités de Java.

Dans ce didacticiel, nous allons voir comment analyser une valeurString à un objetTimestamp et comment formater un objetTimestamp en un objetString.

Et commeTimestamp repose sur un format propriétaire Java, nous verrons comment s’adapter efficacement.

2. Analyser unString en unTimestamp

2.1. Format standard

La méthode la plus simple pour analyser unString to aTimestamp est sa méthodevalueOf :

Timestamp.valueOf("2018-11-12 01:02:03.123456789")

Et quand notreString est au format d'horodatage JDBC -yyyy-m[m]-d[d] hh:mm: _ss [.f…] _ - alors c'est assez simple.

Nous pouvons interpréter ce motif comme ceci:

Modèle La description Exemple

yyyy

Représente l'année, et il est obligatoire d'avoir quatre chiffres pour elle.

2018

m[m]

Pour la composante mois, nous devons avoir un ou deux chiffres (de 1 à 12).

1, 11

d[d]

Pour la valeur du jour du mois, nous devons avoir un ou deux chiffres (de 1 à 31).

7, 12

hh

Représente l'heure de la journée, avec des valeurs autorisées de 0 à 23.

01, 16

mm

Représente les minutes de l'heure, avec des valeurs autorisées comprises entre 0 et 59.

02, 45

ss

Représente les secondes dans la minute, avec des valeurs autorisées de 0 à 59.

03, 52

[.F…]

Représente des fractions facultatives de seconde, peut atteindre une précision de nanosecondes, de sorte que les valeurs autorisées sont comprises entre 0 et 999999999.

12, 1567, 123456789

2.2. Formats alternatifs

Maintenant, si ce n'est pas au format d'horodatage JDBC, alors heureusement,valueOf prend également une instanceLocalDateTime .

This means we can take a date in any format, nous avons juste besoin de commencer parconvert it into a LocalDateTime:

String pattern = "MMM dd, yyyy HH:mm:ss.SSSSSSSS";
String timestampAsString = "Nov 12, 2018 13:02:56.12345678";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime localDateTime = LocalDateTime.from(formatter.parse(timestampAsString));

Et puis nous pouvons utiliservalueOf que nous faisions auparavant:

Timestamp timestamp = Timestamp.valueOf(localDateTime);
assertEquals("2018-11-12 13:02:56.12345678", timestamp.toString());

Notez au passage que,unlike a Date object, a Timestamp object is capable of storing fractions of a second.

3. Formater unTimestamp enString

Pour formater unTimestamp, nous aurons le même défi car son format par défaut est le format d’horodatage JDBC propriétaire:

assertEquals("2018-11-12 13:02:56.12345678", timestamp.toString());

Mais, encore une fois, en utilisant une conversion intermédiaire, nous pouvons formater lesString résultants en un modèle de date et d'heure différent, comme la norme ISO-8601:

Timestamp timestamp = Timestamp.valueOf("2018-12-12 01:02:03.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;

String timestampAsString = formatter.format(timestamp.toLocalDateTime());
assertEquals("2018-12-12T01:02:03.123456789", timestampAsString);

4. Conclusion

Dans cet article, nous avons vu comment convertir entre les objetsString etTimestamp en Java. De plus, nous avons vu comment utiliser la conversionLocalDateTime comme étape intermédiaire afin de convertir vers et à partir de différents modèles de date et d'heure.

Et assurez-vous de trouver tous ces exemples et extraitsover on GitHub.