Saya ingin mengonversi java.util.Date
objek ke String
dalam Java.
Formatnya adalah 2010-05-30 22:15:52
java
date
formatting
java.util.date
novicePrgrmr
sumber
sumber
Date
pada tahun 2019. Kelas itu dirancang dengan buruk dan lama usang. Alih-alih menggunakanInstant
atau kelas lain dari java.time, API tanggal dan waktu Java modern .Jawaban:
Konversi Tanggal menjadi String menggunakan
DateFormat#format
metode:Dari http://www.kodejava.org/examples/86.html
sumber
Calendar
bukannya polosnew Date()
? Apakah ada perbedaan?MM/dd/yyyy
format bodoh dan rusak. Jangan gunakan itu. Selalu gunakandd/MM/yyyy
atauyyyy-MM-dd
.yyyy-MM-dd
mana-mana, tetapi apa yang dapat Anda lakukan?).sumber
Commons-lang DateFormatUtils penuh dengan barang (jika Anda memiliki commons-lang di classpath Anda)
sumber
null
.tl; dr
waktu java
Cara modern adalah dengan kelas java.time yang sekarang menggantikan kelas tanggal lama waktu lama yang merepotkan.
Konversi dulu
java.util.Date
menjadiInstant
. TheInstant
kelas merupakan saat di timeline di UTC dengan resolusi nanodetik (hingga sembilan (9) angka dari pecahan desimal).Konversi ke / dari java.time dilakukan dengan metode baru yang ditambahkan ke kelas lama.
Baik Anda
java.util.Date
danjava.time.Instant
berada di UTC . Jika Anda ingin melihat tanggal dan waktu sebagai UTC, biarkan saja. PanggilantoString
untuk menghasilkan sebuah String dalam format standar ISO 8601 .Untuk format lain, Anda perlu mengubah Anda
Instant
menjadi lebih fleksibelOffsetDateTime
.Lihat kode dijalankan langsung di IdeOne.com .
Untuk mendapatkan String dalam format yang Anda inginkan, tentukan a
DateTimeFormatter
. Anda dapat menentukan format khusus. Tapi saya akan menggunakan salah satu formatters yang telah ditentukan (ISO_LOCAL_DATE_TIME
), dan menggantiT
outputnya dengan SPACE.Ngomong-ngomong saya tidak merekomendasikan format seperti ini di mana Anda sengaja kehilangan informasi offset-dari-UTC atau zona waktu. Menciptakan ambiguitas tentang makna nilai tanggal-waktu string itu.
Waspadalah juga terhadap kehilangan data, karena setiap pecahan detik diabaikan (secara efektif terpotong) dalam representasi String Anda tentang nilai tanggal-waktu.
Untuk melihat momen yang sama melalui lensa waktu jam dinding wilayah tertentu , terapkan a
ZoneId
untuk mendapatkanZonedDateTime
.Untuk menghasilkan String yang diformat, lakukan hal yang sama seperti di atas tetapi ganti
odt
denganzdt
.Jika mengeksekusi kode ini berkali-kali, Anda mungkin ingin menjadi sedikit lebih efisien dan menghindari panggilan
String::replace
. Menjatuhkan panggilan itu juga membuat kode Anda lebih pendek. Jika diinginkan, tentukan pola pemformatan Anda sendiri diDateTimeFormatter
objek Anda sendiri . Tembolok instance ini sebagai konstanta atau anggota untuk digunakan kembali.Terapkan formatter itu dengan melewatkan instance.
Tentang java.time
The java.time kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan kelas tanggal-waktu lama merepotkan seperti
java.util.Date
,.Calendar
, &java.text.SimpleDateFormat
.Proyek Joda-Time , sekarang dalam mode pemeliharaan , menyarankan migrasi ke java.time.
Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan.
Sebagian besar fungsi java.time di-portingkan ke Java 6 & 7 di ThreeTen-Backport dan selanjutnya diadaptasi ke Android di ThreeTenABP (lihat Cara menggunakan ... ).
Proyek ThreeTen-Extra memperpanjang java.time dengan kelas tambahan. Proyek ini adalah ajang pembuktian untuk kemungkinan penambahan masa depan ke java.time.
sumber
Z
digunakan alih-alih+00:00
secara default. Saya memperbaiki jawabannya, terima kasih. FYI, artinya sama:,Z
diucapkan “Zulu” berarti offset nol jam-menit-detik, sama dengan+00:00
. Standar ISO 8601 mendukung kedua gaya.atOffset
metode padaInstant
kelas di Jawa 8. Lihat Javadoc:Instant::atOffset
. Di Java 8, panggilan sepertiInstant.now().atOffset( ZoneOffset.UTC ).toString()
akan dijalankan. Periksaimport
pernyataan Anda . Verifikasi IDE / proyek Anda diatur untuk menjalankan Java 8 atau lebih baru daripada versi Java sebelumnya. Melihat kode dijalankan live di IdeOne.com: ideone.com/2Vm2O5Satu-liner yang bersifat steroid di Jawa tua:
Ini menggunakan Formatter dan pengindeksan relatif bukannya
SimpleDateFormat
yang tidak aman , btw.Sedikit lebih berulang tetapi hanya membutuhkan satu pernyataan. Ini mungkin berguna dalam beberapa kasus.
sumber
Mengapa Anda tidak menggunakan Joda (org.joda.time.DateTime)? Ini pada dasarnya satu baris.
sumber
DateTime
objek.new DateTime( currentDate , DateTimeZone.forID( "America/Montreal" ) )
Sepertinya Anda mencari SimpleDateFormat .
Format: yyyy-MM-dd kk: mm: ss
sumber
HH
(0-23) lebih umum.Dalam satu tembakan;)
Untuk mendapatkan Tanggal
Untuk mendapatkan Waktu
Untuk mendapatkan tanggal dan waktu
Selamat coding :)
sumber
java.util.Date
,java.util.Calendar
, danjava.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 & Java 9. Lihat Tutorial oleh Oracle .sumber
Cara termudah untuk menggunakannya adalah sebagai berikut:
di mana "yyyy-MM-dd'T'HH: mm: ss" adalah format tanggal pembacaan
output: Minggu 14 April 16:11:48 EEST 2013
Catatan: HH vs jam - HH mengacu pada format waktu 24 jam - jam mengacu pada format waktu 12 jam
sumber
Jika Anda hanya memerlukan waktu dari tanggal, Anda bisa menggunakan fitur String.
Ini akan secara otomatis memotong bagian waktu dari String dan menyimpannya di dalam
timeString
.sumber
Berikut adalah contoh penggunaan Java 8 Time API baru untuk memformat lawas
java.util.Date
:Ini menyenangkan tentang
DateTimeFormatter
hal itu dapat di-cache secara efisien karena aman-thread (tidak sepertiSimpleDateFormat
).Daftar fomatters yang telah ditentukan dan referensi pola notasi .
Kredit:
Bagaimana cara mem-parsing / memformat tanggal dengan LocalDateTime? (Java 8)
Java8 java.util.Date konversi ke java.time.ZonedDateTime
Memformat Instan ke String
Apa perbedaan antara java 8 ZonedDateTime dan OffsetDateTime?
sumber
Coba ini,
Keluaran:
Untuk lebih lanjut tentang format tanggal dan waktu dalam tautan rujukan java di bawah ini
Pusat Bantuan Oracle
Contoh waktu tanggal dalam java
sumber
sumber
Ayo coba ini
Atau fungsi utilitas
Dari Convert Date to String in Java
sumber
sumber
sumber
Opsi satu baris
Opsi ini mendapatkan satu baris mudah untuk menulis tanggal yang sebenarnya.
sumber
java.util.Date
,java.util.Calendar
, danjava.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 dan kemudian. Lihat Tutorial oleh Oracle .2019-20-23 09:20:22
- bulan 20 ??) (2) Saya tidak bisa melihat bahwa jawabannya memberikan apa pun yang belum tercakup dalam jawaban lain. (3) Tolong jangan mengajar anak-anak muda untuk menggunakan kelas yang sudah lama usang dan terkenal merepotkanSimpleDateFormat
. Setidaknya bukan sebagai opsi pertama. Dan bukan tanpa reservasi apa pun. Hari ini kami memiliki jauh lebih baik dijava.time
, API tanggal dan waktu Jawa modern, dan ituDateTimeFormatter
.