java.time
MadProgrammer tarafından cevap konusunda özellikle uç doğrudur Joda-Time . Joda-Time'ın halefi artık yeni java.time paketi olarak Java 8'de yerleşik olarak bulunuyor . Java 8'deki örnek kod.
Tarih-saat ile çalışırken (yerel tarihe karşılık), saat dilimi kritiktir. Ayın günü saat dilimine bağlıdır. Örneğin, Hindistan saat dilimi olan +05:30
ise, (beş buçuk saat ileri UTC) Fransa sadece bir saat ileride. Yani Hindistan'da yeni bir günde bir anın bir tarihi varken, aynı anın “dün” tarihi vardır. Herhangi bir saat dilimi veya ofset bilgisi içermeyen dize çıktısı oluşturmak belirsizlik yaratıyor. YYYY-AA-GG çıktısını istediniz, bu yüzden sağladım, ancak önermiyorum. Bunun yerine bu çıktıyı almak ISO_LOCAL_DATE
için kullanılır ISO_DATE
: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 );
Konsola dökümü…
System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );
Çalıştırıldığında…
zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25
Joda-Time
Java.time öğesinin öncüsü olan Joda-Time kitaplığını kullanan benzer kod .
DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );
ISO 8601
Bu arada, giriş dizenizin bu biçimi ISO 8601 tarafından tanımlanan birkaç kullanışlı tarih-saat dizesi biçiminden biri olan standart bir biçimdir .
Hem Joda-Time hem de java.time, çeşitli tarih-saat değerlerinin dize temsillerini ayrıştırırken ve oluştururken varsayılan olarak ISO 8601 formatlarını kullanır.
Date
içinyyyy-MM-dd
veya bir dize ayrıştırmakyyyy-MM-dd
aDate
değeri ?? Tarihi biçimlendirmek için, yalnızcaformat1.format(date)
ayrıştırmak için kullanın, şunu kullanınformat1.parse(someStringValueInTheCorrectFormat)