Konversi antara String dan Timestamp

1. Ikhtisar

Timestamp adalah salah satu dari sedikit objek tanggal-waktu lama di Java.

Dalam tutorial ini, kita akan melihat cara mengurai dari nilai String ke objek Timestamp dan cara memformat objek Timestamp menjadi String.

Dan karena Timestamp bergantung pada format kepemilikan Java, kita akan melihat cara beradaptasi secara efektif.

2. Parse String ke Timestamp

2.1. Format Standar

Cara termudah untuk mengurai String ke Timestamp adalah metode valueOf -nya :

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

Dan jika String kita dalam format stempel waktu JDBC - yyyy-m [m] -d [d] hh: mm : ss [.f…] - maka itu cukup sederhana.

Kita bisa menafsirkan pola itu seperti ini:

Pola Deskripsi Contoh
yyyy Mewakili tahun, dan wajib memiliki empat digit untuk itu. 2018
m [m] Untuk komponen bulan, kita harus memiliki satu atau dua digit (dari 1 hingga 12). 1, 11
DD] Untuk nilai hari dalam sebulan, kita harus memiliki satu atau dua digit (dari 1 hingga 31). 7, 12
hh Mewakili jam dalam sehari, dengan nilai yang diizinkan dari 0 hingga 23. 01, 16
mm Mewakili menit dalam satu jam, dengan nilai yang diizinkan dari 0 hingga 59. 02, 45
ss Mewakili detik dalam satu menit, dengan nilai yang diizinkan dari 0 hingga 59. 03, 52
[.f…] Mewakili pecahan opsional dari satu detik, bisa sampai presisi nanodetik sehingga nilai yang diizinkan adalah dari 0 hingga 999999999. 12, 1567, 123456789

2.2. Format Alternatif

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

Ini berarti kami dapat mengambil tanggal dalam format apa pun, kami hanya perlu mengubahnya terlebih dahulu 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 bisa menggunakan valueOf yang kita lakukan sebelumnya:

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

Perhatikan bahwa, tidak seperti objek Tanggal , objek Stempel waktu mampu menyimpan sepersekian detik.

3. Memformat Stempel Waktu sebagai String

Untuk memformat Stempel Waktu , kita akan mendapatkan tantangan yang sama karena format defaultnya adalah format stempel waktu JDBC:

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

Namun, sekali lagi, dengan menggunakan konversi perantara, kita dapat memformat String yang dihasilkan ke pola tanggal dan waktu yang berbeda, seperti standar 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

Di artikel ini, kami melihat cara mengonversi antara objek String dan Timestamp di Java. Selain itu, kami melihat bagaimana menggunakan konversi LocalDateTime sebagai langkah perantara untuk mengonversi ke, dan dari, pola tanggal dan waktu yang berbeda.

Dan pastikan untuk menemukan semua contoh dan cuplikan ini di GitHub.