Saya sudah String
mewakili tanggal.
String date_s = "2011-01-18 00:00:00.0";
Saya ingin mengonversinya menjadi Date
dan mengeluarkannya dalam YYYY-MM-DD
format.
2011-01-18
Bagaimana saya bisa mencapai ini?
Oke, berdasarkan jawaban yang saya ambil di bawah, inilah sesuatu yang saya coba:
String date_s = " 2011-01-18 00:00:00.0";
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date date = dt.parse(date_s);
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));
Tetapi menghasilkan 02011-00-1
bukannya yang diinginkan 2011-01-18
. Apa yang saya lakukan salah?
java
string
date
formatting
date-format
amit4444
sumber
sumber
Jawaban:
Menggunakan
LocalDateTime#parse()
(atauZonedDateTime#parse()
jika string berisi bagian zona waktu) untuk menguraikan aString
dalam pola tertentu menjadi aLocalDateTime
.Menggunakan
LocalDateTime#format()
(atauZonedDateTime#format()
) untuk memformat aLocalDateTime
keString
dalam pola tertentu.Atau , saat Anda belum berada di Java 8, gunakan
SimpleDateFormat#parse()
untuk mem-parsingString
dalam pola tertentu menjadi aDate
.Gunakan
SimpleDateFormat#format()
untuk memformat aDate
keString
dalam pola tertentu.Lihat juga:
Pembaruan : sesuai upaya Anda yang gagal: polanya peka terhadap huruf besar-kecil . Baca
java.text.SimpleDateFormat
javadoc apa kepanjangan dari masing-masing bagian. Jadi berdiri misalnyaM
selama berbulan-bulan danm
beberapa menit. Juga, tahun ada empat digityyyy
, bukan limayyyyy
. Lihat lebih dekat pada cuplikan kode yang saya posting di sini di atas.sumber
Pemformatan bersifat SENSITIF KASUS jadi GUNAKAN MM untuk bulan bukan mm (ini untuk menit) dan yyyy Untuk Referensi Anda dapat menggunakan cheatsheet berikut.
Contoh:
sumber
Jawabannya tentu saja untuk membuat objek SimpleDateFormat dan menggunakannya untuk mem-parsing Strings to Date dan untuk memformat Dates to Strings. Jika Anda sudah mencoba SimpleDateFormat dan itu tidak berhasil, maka tunjukkan kode Anda dan kesalahan yang mungkin Anda terima.
Tambahan: "mm" dalam format String tidak sama dengan "MM". Gunakan MM selama berbulan-bulan dan mm untuk menit. Juga, yyyyy tidak sama dengan yyyy. misalnya,:
sumber
hh
akan memberi Anda waktu dalam kisaran 1-12, Anda harus menggunakana
selain untuk mencetak / menguraiAM
atauPM
. Untuk mencetak / mengurai jam di kisaran 0-23, gunakanHH
.Mengapa tidak menggunakan ini saja
Juga, ini cara lain:
atau
Bersulang!
sumber
Menggunakan
java.time
paket di Java 8 dan yang lebih baru:sumber
[diedit untuk memasukkan koreksi BalusC] Kelas SimpleDateFormat harus melakukan trik:
sumber
DD
singkatan dari "day in year", bukan "day in month".hh
singkatan dari "hour in am / pm (1-12)", bukan "hour in day (0-23)".Jawaban lain benar, pada dasarnya Anda memiliki jumlah karakter "y" yang salah dalam pola Anda.
Zona waktu
Namun satu masalah lagi ... Anda tidak membahas zona waktu. Jika Anda bermaksud UTC , maka Anda seharusnya mengatakannya. Jika tidak, jawabannya tidak lengkap. Jika semua yang Anda inginkan adalah bagian tanggal tanpa waktu, maka tidak ada masalah. Tetapi jika Anda melakukan pekerjaan lebih lanjut yang mungkin melibatkan waktu, maka Anda harus menentukan zona waktu.
Joda-Time
Berikut adalah jenis kode yang sama tetapi menggunakan perpustakaan open-source Joda-Time 2.3 pihak ketiga
Saat dijalankan ...
sumber
Silakan merujuk "Pola Tanggal dan Waktu" di sini. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
sumber
sumber
sumber
sumber
Anda bisa menggunakan:
Itu bekerja dengan sempurna!
sumber
Anda juga dapat menggunakan substring ()
Jika Anda ingin ruang di depan tanggal, gunakan
sumber
Anda dapat mencoba Java 8 baru
date
, informasi lebih lanjut dapat ditemukan pada dokumentasi Oracle .Atau Anda dapat mencoba yang lama
sumber
sumber
hapus satu formulir y
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
seharusnyaSimpleDateFormat dt1 = new SimpleDateFormat("yyyy-mm-dd");
sumber
DateTimeFormatter
atau berpegang teguh pada yang sudah usangSimpleDateFormat
).SimpleDateFormat dt1 = new SimpleDateFormat ("yyyy-mm-dd");
sumber
DateTimeFormatter
danDateTimeFormatterBuilder
. MenyarankanSimpleDateFormat
pada 2019 adalah saran yang buruk.hh
adalah untuk jam.Katakanlah Anda ingin mengubah 2019-12-20 10:50 GMT +6: 00 hingga 2019-12-20 10:50 pertama-tama Anda harus memahami format tanggal terlebih dahulu format satu tanggal adalah yyyy-MM-dd hh : mm a zzz dan format tanggal yang kedua adalah yyyy-MM-hh: mm a
hanya mengembalikan sebuah string dari fungsi ini seperti.
Fungsi ini akan mengembalikan jawaban keinginan Anda. Jika Anda ingin menyesuaikan lebih banyak, cukup tambahkan atau hapus komponen dari format tanggal.
sumber