Konverter mellem streng og tidsstempel

1. Oversigt

Tidsstempel er et af få arvede dato- og tidsobjekter i Java.

I denne vejledning ser vi, hvordan man analyserer fra en Snor værdi til en Tidsstempel objekt og hvordan man formaterer en Tidsstempel modsætter sig en Snor.

Og siden Tidsstempel er afhængig af et Java-proprietært format, vi ser, hvordan vi effektivt tilpasser os.

2. Parse a Snor til en Tidsstempel

2.1. Standardformat

Den enkleste måde at analysere a Snor til en Tidsstempel er dens Værdi af metode:

Tidsstempel.værdiOf ("2018-11-12 01: 02: 03.123456789")

Og når vores Snor er i JDBC-tidsstempelformat - åååå-m [m] -d [d] tt: mm:ss[.f ...] - så er det ret simpelt.

Vi kan fortolke dette mønster således:

MønsterBeskrivelseEksempel
ååååRepræsenterer året, og det er obligatorisk at have fire cifre til det.2018
m [m]For månedskomponenten skal vi have enten et eller to cifre (fra 1 til 12).1, 11
d [d]For månedsværdien skal vi have enten et eller to cifre (fra 1 til 31).7, 12
hhStår for timen på dagen med tilladte værdier fra 0 til 23.01, 16
mmStår i timens minutter med tilladte værdier fra 0 til 59.02, 45
ssStår i sekunder i minuttet med tilladte værdier fra 0 til 59.03, 52
[.f ...]Repræsenterer valgfri brøkdele af et sekund, kan være op til nanosekunders præcision, så de tilladte værdier er fra 0 til 999999999.12, 1567, 123456789

2.2. Alternative formater

Hvis det ikke er i JDBC-tidsstempelformat, så heldigvis, Værdi af tager også en LocalDateTime eksempel.

Dette betyder, at vi kan tage en dato i ethvert format, vi skal bare først konvertere det til en LocalDateTime:

Strengmønster = "MMM dd, åååå HH: mm: ss.SSSSSSSS"; String timestampAsString = "12. nov. 2018 13: 02: 56.12345678"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern (mønster); LocalDateTime localDateTime = LocalDateTime.from (formatter.parse (tidsstempelAsString));

Og så kan vi bruge Værdi af vi gjorde før:

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

Bemærk i forbifarten, i modsætning til en Dato objekt, en Tidsstempel objekt er i stand til at lagre brøkdele af et sekund.

3. Formatér a Tidsstempel som en Snor

For at formatere en Tidsstempel, har vi den samme udfordring, da standardformatet er det proprietære JDBC-tidsstempelformat:

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

Men igen ved hjælp af en mellemliggende konvertering kan vi formatere den resulterende Snor til et andet dato- og tidsmønster, som ISO-8601-standarden:

Tidsstempel tidsstempel = 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", tidsstempelAsString);

4. Konklusion

I denne artikel så vi, hvordan man konverterer mellem Snor og Tidsstempel objekter i Java. Vi så også, hvordan man bruger LocalDateTime konvertering som et mellemliggende trin for at konvertere til og fra forskellige dato- og tidsmønstre.

Og sørg for at finde alle disse eksempler og uddrag på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found