Prevod medzi reťazcom a časovou značkou

1. Prehľad

Časová značka je jedným z mála starších objektov dátumu a času v Jave.

V tomto návode uvidíme, ako analyzovať z a String hodnota do a Časová značka objekt a ako formátovať a Časová značka namietať voči a String.

A keďže Časová značka spolieha sa na proprietárny formát Java, uvidíme, ako sa efektívne adaptovať.

2. Analyzovať a String do a Časová značka

2.1. Štandardný formát

Najjednoduchší spôsob analýzy a String do a Časová značka je jeho hodnota metóda:

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

A keď náš String je vo formáte časovej pečiatky JDBC - rrrr-m [m] -d [d] hh: mm:ss[.f ...] - potom je to celkom jednoduché.

Tento vzor môžeme interpretovať takto:

VzorPopisPríklad
rrrrPredstavuje rok a je povinné mať preň štyri číslice.2018
m [m]Pre zložku mesiac musíme mať jednu alebo dve číslice (od 1 do 12).1, 11
d [d]Pre hodnotu dňa v mesiaci musíme mať jednu alebo dve číslice (od 1 do 31).7, 12
hhStojí za hodinu dňa s povolenými hodnotami od 0 do 23.01, 16
mmStojí minúty v hodine s povolenými hodnotami od 0 do 59.02, 45
ssStojí sekundy v minúte s povolenými hodnotami od 0 do 59.03, 52
[.f ...]Predstavuje voliteľné zlomky sekundy, môže byť s presnosťou až na nanosekundy, takže povolené hodnoty sú od 0 do 999999999.12, 1567, 123456789

2.2. Alternatívne formáty

Ak teraz nie je vo formáte časovej pečiatky JDBC, potom našťastie hodnota tiež berie a LocalDateTime inštancia.

To znamená, že môžeme mať dátum v akomkoľvek formáte, musíme ho najskôr previesť na a LocalDateTime:

Reťazcový vzor = "MMM dd, rrrr HH: mm: ss.SSSSSSSS"; String timestampAsString = "12. novembra 2018 13: 02: 56.12345678"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern (vzor); LocalDateTime localDateTime = LocalDateTime.from (formatter.parse (timestampAsString));

A potom môžeme použiť hodnota robili sme predtým:

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

Všimnite si mimochodom, na rozdiel od a Dátum objekt, a Časová značka objekt je schopný uložiť zlomky sekundy.

3. Formátujte a Časová značka ako String

Na formátovanie a Časová značka, budeme mať rovnakú výzvu, pretože jej predvoleným formátom je vlastný formát časovej pečiatky JDBC:

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

Ale opäť pomocou sprostredkujúcej konverzie môžeme výsledný formátovať String na iný vzor dátumu a času, ako je norma ISO-8601:

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

4. Záver

V tomto článku sme videli, ako prevádzať medzi String a Časová značka objekty v Jave. Tiež sme videli, ako sa používa LocalDateTime prevod ako sprostredkovateľský krok na prevod do a z rôznych vzorov dátumu a času.

A nezabudnite všetky tieto príklady a úryvky nájsť na GitHub.


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