Bagaimana untuk mendapatkan timestamp dalam format string dalam Java? "yyyy.MM.dd.HH.mm.ss"
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Timestamp());
Ini adalah apa yang saya miliki, tapi Timestamp() membutuhkan parameter...
Mengganti
new Timestamp();
dengan
new java.util.Date()
karena tidak ada default constructor untuk Timestamp
, atau anda bisa melakukannya dengan metode:
new Timestamp(System.currentTimeMillis());
Hanya menggunakan modern jawa.waktu kelas. Jangan pernah menggunakan warisan yang mengerikan kelas seperti SimpleDateFormat
, Tanggal
, atau jawa.sql.Timestamp
.
ZonedDateTime // Represent a moment as perceived in the wall-clock time used by the people of a particular region ( a time zone).
.now( // Capture the current moment.
ZoneId.of( "Africa/Tunis" ) // Specify the time zone using proper Continent/Region name. Never use 3-4 character pseudo-zones such as PDT, EST, IST.
) // Returns a `ZonedDateTime` object.
.format( // Generate a `String` object containing text representing the value of our date-time object.
DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" )
) // Returns a `String`.
Pendekatan modern menggunakan jawa.waktu kelas seperti yang terlihat di atas.
Jika anda JDBC driver sesuai dengan JDBC 4.2, anda dapat langsung menukarkan jawa.waktu benda-benda dengan database. Gunakan PreparedStatement::setObject
dan ResultSet::getObject
.
Jika anda JDBC driver belum sesuai dengan JDBC 4.2 untuk dukungan jawa.waktu jenis, anda harus kembali menggunakan java.kelas sql.
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ; // Capture the current moment in UTC.
myPreparedStatement.setObject( … , odt ) ;
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
Java.sql jenis, seperti jawa.sql.Timestamp
, hanya boleh digunakan untuk transfer masuk dan keluar dari database. Segera mengkonversi ke jawa.waktu jenis di Jawa 8 dan kemudian.
jawa.waktu.Instan
A jawa.sql.Timestamp
peta jawa.waktu.Instan
, sesaat pada waktu dalam UTC.
java.sql.Timestamp ts = myResultSet.getTimestamp( … );
Instant instant = ts.toInstant();
Menerapkan diinginkan/diharapkan zona waktu untuk mendapatkan ZonedDateTime
.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Gunakan DateTimeFormatter
untuk menghasilkan string. Pola kode yang mirip dengan orang-orang dari jawa.teks.SimpleDateFormat
tetapi tidak tepat, sehingga membaca doc hati-hati.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu.MM.dd.HH.mm.ss" );
String output = zdt.format( formatter );
Ini format tertentu rancu makna yang tepat seperti itu tidak memiliki indikasi offset dari UTC atau zona waktu.
Jika anda memiliki mengatakan dalam hal ini, saya sarankan anda mempertimbangkan untuk menggunakan standar ISO 8601 format daripada bergulir anda sendiri. Format standar sangat mirip dengan milik anda. Misalnya:2016-02-20T03:26:32+05:30
.
Java.waktu kelas menggunakan format standar secara default, sehingga tidak perlu untuk menentukan sebuah pola. The ZonedDateTime
kelas meluas format standar dengan menambahkan nama zona waktu (yang bijaksana improvement).
String output = zdt.toString(); // Example: 2007-12-03T10:15:30+01:00[Europe/Paris]
Anda dapat mengkonversi dari jawa.waktu kembali ke jawa.sql.Timestamp
. Ekstrak yang Instan
dari ZonedDateTime
.
Metode baru telah ditambahkan ke old kelas untuk memudahkan mengkonversi ke/dari jawa.waktu kelas.
java.sql.Timestamp ts = java.sql.Timestamp.from( zdt.toInstant() );
The jawa.waktu kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan merepotkan tua legacy tanggal waktu kelas seperti jawa.util.Tanggal
, Kalender
, & SimpleDateFormat
.
The Joda-Waktu proyek, sekarang di maintenance mode, menyarankan migrasi ke jawa.waktu kelas.
Untuk mempelajari lebih lanjut, lihat Oracle Tutorial. Dan pencarian Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasi JSR 310.
Anda dapat bertukar jawa.waktu benda-benda secara langsung dengan database anda. Gunakan JDBC driver sesuai dengan JDBC 4.2 atau yang lebih baru. Tidak perlu untuk string, tidak perlu untuk jawa.sql.*
kelas-kelas.
Di mana untuk memperoleh jawa.waktu kelas?
Interval
, YearWeek
, YearQuarter
, dan lebih. Yang lebih tepat pendekatan untuk menentukan titik Lokal daerah sebagai parameter pada konstruktor. Contoh di bawah ini menggunakan US Lokal wilayah. Format tanggal adalah lokal-sensitif dan menggunakan Lokal untuk menyesuaikan informasi relatif terhadap adat dan konvensi pengguna's wilayah Lokal (Platform Java SE 7)
String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss", Locale.US).format(new Date());
Penggunaan modern jawa.waktu
kelas jika anda menggunakan java 8 atau yang lebih baru.
String s = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
Basil Bourque's jawaban yang cukup baik. Tapi itu's terlalu lama. Banyak orang yang tidak memiliki kesabaran untuk membacanya. Top 3 jawaban yang terlalu lama dan dapat menyesatkan Jawa lebah baru .Jadi aku memberikan ini pendek dan modern jawabannya baru datang devs. Semoga jawaban ini dapat mengurangi penggunaan mengerikan SimpleDateFormat
.