tl; Dr.
Instant.now()
.toString()
2016-05-06T23: 24: 25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19: 24: 25.694
java.time
Java 8 ve sonraki sürümlerinde, Java 8 ve sonraki sürümlerinde yerleşik java.time çerçevesine sahibiz . Bu yeni sınıflar, sorunlu eski java.util.Date/.Calendar sınıflarını destekliyor. Yeni sınıflar , halefi olarak düşünülen, konseptte benzer ancak yeniden tasarlanmış , son derece başarılı Joda-Time çerçevesinden ilham alıyor . JSR 310 tarafından tanımlanmıştır . ThreeTen-Extra projesi ile genişletildi . Eğiticiye bakın .
Java.time değerinin , her iki java.util.Tarih ve Joda-Time değerinin milisaniye çözünürlüğüne (3 ondalık basamak) karşı nanosaniye çözünürlük (saniyenin ondalık kısmında 9 ondalık basamak) yapabildiğini unutmayın . Bu nedenle, yalnızca 3 ondalık basamak görüntüleyecek şekilde biçimlendirme yaparken, verileri gizliyor olabilirsiniz.
Verilerinizden herhangi bir mikrosaniye veya nanosaniye ortadan kaldırmak istiyorsanız, kısaltın.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
Java.time sınıfları, dizeleri ayrıştırırken / oluştururken varsayılan olarak ISO 8601 biçimini kullanır. Sondaki A Z
, kısa Zulu
anlamına gelir ve UTC anlamına gelir .
An Instant
, UTC'deki zaman çizelgesinde nanosaniyeye kadar çözünürlüğe sahip bir anı temsil eder . Java 8'de geçerli anı yakalamak milisaniye ile sınırlıdır , Java 9'da yeni bir uygulama bilgisayarınızın donanım saatinin yeteneklerine bağlı olarak nanosaniye kadar yakalar.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23: 24: 25.694Z
Değiştir T
boşlukla ortada ve Z
hiçbir şey, istediğiniz çıktıyı almak için.
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23: 24: 25.694
Ofseti veya saat dilimini dahil etmeyi umursamadığınız için, belirli bir yerle alakasız bir "yerel" tarih-saat yapın.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
Joda-Time
Son derece başarılı Joda-Time kütüphanesi, java.time çerçevesine ilham kaynağı oldu. Uygun olduğunda java.time'a geçilmesi tavsiye edilir.
ISO 8601 formatlı milisaniye içerir ve varsayılan olan Joda-Time 2.4 kütüphanesine.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
Çalıştırıldığında…
Now: 2013-11-26T20:25:12.014Z
Ayrıca, gerekirse milisaniye saniyenin bir kısmını sayı olarak isteyebilirsiniz:
int millisOfSecond = myDateTime.getMillisOfSecond ();