Tukar antara Rentetan dan Cap Waktu

1. Gambaran keseluruhan

Cap waktu adalah salah satu dari beberapa objek tarikh-tarikh lama di Java.

Dalam tutorial ini, kita akan melihat bagaimana menguraikan dari nilai String ke objek Timestamp dan bagaimana memformat objek Timestamp ke String.

Dan kerana Timestamp bergantung pada format proprietari Java, kita akan melihat cara menyesuaikan diri dengan berkesan.

2. Uraikan rentetan pada Cap Waktu

2.1. Format Piawai

Kaedah paling mudah untuk menguraikan String to Timestamp adalah kaedah nilainya dari :

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

Dan apabila String kami dalam format cap waktu JDBC - yyyy-m [m] -d [d] hh: mm : ss [.f…] - maka ia cukup mudah.

Kita boleh mentafsirkan corak seperti ini:

Corak Penerangan Contohnya
yyyy Merupakan tahun, dan wajib mempunyai empat digit untuknya. 2018
m [m] Untuk komponen bulan, kita mesti mempunyai satu atau dua digit (dari 1 hingga 12). 1, 11
d [d] Untuk nilai hari bulan, kita mesti mempunyai satu atau dua digit (dari 1 hingga 31). 7, 12
hh Berdiri untuk jam sehari, dengan nilai yang dibenarkan dari 0 hingga 23. 01, 16
mm Berdiri selama beberapa minit, dengan nilai yang dibenarkan dari 0 hingga 59. 02, 45
ss Berdiri selama beberapa saat dalam minit, dengan nilai yang dibenarkan dari 0 hingga 59. 03, 52
[.f…] Merupakan pecahan opsyen sesaat, boleh mencapai ketepatan nanodetik sehingga nilai yang dibenarkan adalah dari 0 hingga 999999999. 12, 1567, 123456789

2.2. Format Alternatif

Sekarang, jika tidak dalam format cap waktu JDBC, maka untungnya, valueOf juga mengambil contoh LocalDateTime .

Ini bermaksud kita boleh mengambil tarikh dalam format apa pun, kita hanya perlu mengubahnya menjadi 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));

Dan kemudian kita boleh menggunakan valueOf kami lakukan sebelum ini:

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

Perhatikan bahawa, tidak seperti objek Date , objek Timestamp mampu menyimpan pecahan sesaat.

3. Format Cap Masa sebagai Rentetan

Untuk memformat Cap Waktu , kami akan menghadapi cabaran yang sama kerana format lalai adalah format cap waktu JDBC proprietari:

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

Tetapi, sekali lagi, dengan menggunakan penukaran perantara, kita dapat memformat String yang dihasilkan ke corak tarikh dan waktu yang berbeza, seperti standard 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. Kesimpulan

Dalam artikel ini, kami melihat cara menukar antara objek String dan Timestamp di Java. Juga, kami melihat bagaimana menggunakan penukaran LocalDateTime sebagai langkah perantara untuk menukar ke, dan dari, corak tarikh dan waktu yang berbeza.

Dan pastikan untuk menemui semua contoh dan coretan ini di GitHub.