Pretvori između niza i vremenske oznake

1. Pregled

Vremenska oznaka je jedan od rijetkih naslijeđenih objekata datuma i vremena na Javi.

U ovom uputstvu vidjet ćemo kako se raščlaniti iz a Niz vrijednost prema a Vremenska oznaka objekt i kako formatirati Vremenska oznaka prigovoriti a Niz.

I od Vremenska oznaka oslanja se na Java-zaštićeni format, vidjet ćemo kako se učinkovito prilagoditi.

2. Analizirajte a Niz do a Vremenska oznaka

2.1. Standardni format

Najjednostavniji način raščlanjivanja a Niz do a Vremenska oznaka je svoje vrijednost metoda:

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

A kad naš Niz je u formatu vremenske oznake JDBC - gggg-m [m] -d [d] hh: mm:ss[.f…] - onda je prilično jednostavno.

Taj obrazac možemo protumačiti ovako:

UzorakOpisPrimjer
yyyyPredstavlja godinu i za nju je obavezno imati četiri znamenke.2018
m [m]Za mjesečnu komponentu moramo imati jednu ili dvije znamenke (od 1 do 12).1, 11
dd]Za vrijednost u mjesecu moramo imati jednu ili dvije znamenke (od 1 do 31).7, 12
hhOznačava sat u danu, s dopuštenim vrijednostima od 0 do 23.01, 16
mmStoji nekoliko minuta sata, s dopuštenim vrijednostima od 0 do 59.02, 45
ssStoji sekunde u minuti, s dopuštenim vrijednostima od 0 do 59.03, 52
[.f…]Predstavlja neobavezne djeliće sekunde, može biti precizna do nanosekundi, tako da su dopuštene vrijednosti od 0 do 999999999.12, 1567, 123456789

2.2. Alternativni formati

Ako nije u formatu vremenske oznake JDBC, na sreću, vrijednost također uzima a LocalDateTime primjer.

To znači da možemo uzeti datum u bilo kojem formatu, samo ga prvo moramo pretvoriti u LocalDateTime:

Uzorak niza = "MMM dd, gggg HH: mm: ss.SSSSSSSS"; String timestampAsString = "12. studenog 2018. 13: 02: 56,12345678"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern (uzorak); LocalDateTime localDateTime = LocalDateTime.from (formatter.parse (timestampAsString));

A onda možemo koristiti vrijednost radili smo prije:

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

Imajte na umu da, za razliku od a Datum objekt, a Vremenska oznaka objekt može pohraniti djeliće sekunde.

3. Format a Vremenska oznaka kao Niz

Za formatiranje a Vremenska oznaka, imat ćemo isti izazov jer je zadani format vlasnički format vremenske oznake JDBC:

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

Ali, opet, pomoću posredničke pretvorbe možemo oblikovati rezultirajuće Niz na drugačiji obrazac datuma i vremena, poput ISO-8601 standarda:

Vremenska oznaka vremenska oznaka = 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. Zaključak

U ovom smo članku vidjeli kako pretvoriti između Niz i Vremenska oznaka objekti u Javi. Također, vidjeli smo kako se koristi LocalDateTime pretvorba kao posrednički korak kako bi se pretvorili u različite obrasce datuma i vremena i iz njih.

I obavezno pronađite sve ove primjere i isječke na GitHubu.