waktu java
The jawaban dengan MadProgrammer benar, terutama tip tentang Joda-Time . Pengganti Joda-Time sekarang dibangun ke Java 8 sebagai paket java.time baru . Berikut contoh kode di Java 8.
Saat bekerja dengan tanggal-waktu (sebagai lawan dari tanggal lokal), zona waktu kritis. Hari-bulan tergantung pada zona waktu. Sebagai contoh, zona waktu India adalah +05:30
(lima setengah jam lebih awal dari UTC), sementara Perancis hanya satu jam di depan. Jadi suatu saat di hari baru di India memiliki satu kencan sedangkan saat yang sama di Perancis memiliki tanggal "kemarin". Membuat keluaran string yang tidak memiliki zona waktu atau informasi offset akan menciptakan ambiguitas. Anda meminta output YYYY-MM-DD jadi saya berikan, tapi saya tidak merekomendasikannya. Alih-alih ISO_LOCAL_DATE
saya akan digunakan ISO_DATE
untuk mendapatkan output ini:2014-02-25+05:30
ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );
DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity.
String output = formatterOutput.format( zonedDateTime );
Dump untuk menghibur ...
System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );
Saat dijalankan ...
zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25
Joda-Time
Kode serupa menggunakan perpustakaan Joda-Time , pendahulu untuk java.time.
DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );
ISO 8601
Omong-omong, format string input Anda adalah format standar, salah satu dari beberapa format string tanggal-waktu yang praktis yang ditentukan oleh ISO 8601 .
Baik Joda-Time dan java.time menggunakan format ISO 8601 secara default saat mem-parsing dan membuat representasi string dari berbagai nilai tanggal-waktu.
Date
keyyyy-MM-dd
atau mem-parsing String dariyyyy-MM-dd
ke suatuDate
nilai ?? Untuk memformat tanggal, cukup gunakanformat1.format(date)
, untuk menguraikannya, gunakanformat1.parse(someStringValueInTheCorrectFormat)