Omzetten tussen tekenreeks en tijdstempel

1. Overzicht

Tijdstempel is een van de weinige verouderde datum-tijdobjecten in Java.

In deze zelfstudie zullen we zien hoe u een Draad waarde voor een Tijdstempel object en hoe u een Tijdstempel bezwaar maken tegen een Draad.

En sindsdien Tijdstempel vertrouwt op een eigen Java-indeling, we zullen zien hoe we ons effectief kunnen aanpassen.

2. Ontleed een Draad naar een Tijdstempel

2.1. Standaard formaat

De eenvoudigste manier om een Draad naar een Tijdstempel is zijn waarde van methode:

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

En wanneer onze Draad is in JDBC-tijdstempelindeling - jjjj-m [m] -d [d] uu: mm:ss[.f…] - dan is het vrij simpel.

We kunnen dat patroon als volgt interpreteren:

PatroonOmschrijvingVoorbeeld
jjjjStaat voor het jaar en het is verplicht om er vier cijfers voor te hebben.2018
m [m]Voor de maandcomponent moeten we een of twee cijfers hebben (van 1 tot 12).1, 11
d [d]Voor de waarde voor de dag van de maand moeten we een of twee cijfers hebben (van 1 tot 31).7, 12
hhStaat voor het uur van de dag, met toegestane waarden van 0 tot 23.01, 16
mmStaat voor minuten van het uur, met toegestane waarden van 0 tot 59.02, 45
ssStaat voor seconden in de minuut, met toegestane waarden van 0 tot 59.03, 52
[.f…]Vertegenwoordigt optionele fracties van een seconde, kan tot op nanoseconden nauwkeurig zijn, dus de toegestane waarden zijn van 0 tot 999999999.12, 1567, 123456789

2.2. Alternatieve formaten

Nu, als het niet in JDBC-tijdstempelformaat is, dan gelukkig, waarde van neemt ook een LocalDateTime voorbeeld.

Dit betekent dat we een datum in elk formaat kunnen opnemen, we hoeven het alleen maar om te zetten in een LocalDateTime:

Tekenreekspatroon = "MMM dd, jjjj UU: mm: ss.SSSSSSSS"; String timestampAsString = "12 november 2018 13: 02: 56.12345678"; DateTimeFormatter-formatter = DateTimeFormatter.ofPattern (patroon); LocalDateTime localDateTime = LocalDateTime.from (formatter.parse (timestampAsString));

En dan kunnen we gebruiken waarde van we deden eerder:

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

Merk terloops op dat, in tegenstelling tot een Datum object, een Tijdstempel object is in staat om fracties van een seconde op te slaan.

3. Formatteer een Tijdstempel als een Draad

Om een Tijdstempel, we hebben dezelfde uitdaging omdat het standaardformaat het gepatenteerde JDBC-tijdstempelformaat is:

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

Maar nogmaals, met behulp van een tussenconversie kunnen we het resulterende formaat formatteren Draad naar een ander datum- en tijdpatroon, zoals de ISO-8601-norm:

Timestamp timestamp = Timestamp.valueOf ("2018-12-12 01: 02: 03.123456789"); DateTimeFormatter-formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; Tekenreeks timestampAsString = formatter.format (timestamp.toLocalDateTime ()); assertEquals ("2018-12-12T01: 02: 03.123456789", timestampAsString);

4. Conclusie

In dit artikel hebben we gezien hoe u kunt converteren tussen Draad en Tijdstempel objecten in Java. We hebben ook gezien hoe LocalDateTime conversie als tussenstap om te converteren naar en van verschillende datum- en tijdpatronen.

En zorg ervoor dat u al deze voorbeelden en fragmenten vindt op GitHub.