tl; Dr.
Sen (milisaniye sayısı olarak şimdiki zamanın bir saniyenin fraksiyonu sormak değil çağdan sayım).
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
2017-04-25T03: 01: 14.113Z → 113
- Nanosaniye cinsinden kesirli saniyeyi (milyarlarca) alın.
- Milisaniyeye (bin) kesmek için bine bölün.
Bu koda IdeOne.com'da canlı olarak bakın .
Java.time kullanma
Modern yöntem java.time sınıflarıdır.
Geçerli anı UTC olarak yakalayın.
Instant.now()
Instant.get
A'nın değerini sorgulamak için yöntemi kullanın TemporalField
. Bizim durumumuzda TemporalField
istediğimiz şey ChronoField.MILLI_OF_SECOND
.
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
Veya matematiği kendiniz yapın.
Büyük ihtimalle bunu belirli bir saat dilimi için soruyorsunuz. Saniyenin kesri büyük olasılıkla aynı olacaktır, Instant
ancak zaman dilimlerinde çok fazla anormallik var, bu varsayımı yapmaktan çekiniyorum.
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
Kesirli saniye için sorgulayın. Soru milisaniye olarak soruldu , ancak java.time sınıfları nanosaniye gibi daha hassas bir çözünürlük kullanıyor . Bu, nanosaniye sayısının 0 ile 999.999.999 arasında değişeceği anlamına gelir.
long nanosFractionOfSecond = zdt.getNano();
Gerçekten milisaniye istiyorsanız, daha ince verileri bir milyona bölerek kesin. Örneğin, yarım saniye 500.000.000 nanosaniye ve ayrıca 500 milisaniyedir.
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
Java.time hakkında
Java.time çerçevesi daha sonra Java 8 ve yerleşiktir. Bu sınıflar zahmetli eski yerini mirası gibi tarih-saat sınıfları java.util.Date
, Calendar
& SimpleDateFormat
.
Şu anda bakım modunda olan Joda-Time projesi, java.time sınıflarına geçişi tavsiye ediyor .
Daha fazla bilgi edinmek için Oracle Eğitimi'ne bakın . Ve birçok örnek ve açıklama için Stack Overflow'da arama yapın. Spesifikasyon JSR 310'dur .
Java.time derslerini nereden edinebilirim?
- Java SE 8 ve SE 9 ve üstü
- Dahili.
- Paket bir uygulamaya sahip standart Java API'sinin bir parçası.
- Java 9, bazı küçük özellikler ve düzeltmeler ekler.
- Java SE 6 ve SE 7
- Android
ThreeTen-Ekstra proje ek sınıfları ile java.time uzanır. Bu proje, java.time uygulamasına gelecekteki olası eklemeler için kanıtlayıcı bir zemindir. Burada bazı yararlı sınıfları gibi bulabilir Interval
, YearWeek
, YearQuarter
, ve daha .
[0, 999]
, değil mi? @thinksteep son cümleyi oku.