2016-03-29 19 views
2

böylece gelen milisaniye hassas kaldırma:Java bu uzun değeri

1459245759880 

yuvarlama bu

1459245759000 
+4

Her şeyi denediniz mi, 1000'e bölmek ve 1000 ile çarpmak gibi mi? –

cevap

4

Olağan tamsayıya? (Eğer sonucuna tarih/saat işlemleri yapmak gerekiyorsa uygun - bu durumda size anında çalışabilirsiniz) Java zaman kullanma

long millis = 1459245759880L; 
long rounded = millis/1000 * 1000; 

:

Instant i = Instant.ofEpochMilli(millis).truncatedTo(ChronoUnit.SECONDS); 
long rounded = i.toEpochMilli(); 

Daha dolambaçlı (ve muhtemelen çok net):

long rounded = 1000 * TimeUnit.SECONDS.convert(millis, TimeUnit.MILLISECONDS); 
//OR 
long rounded = TimeUnit.MILLISECONDS.convert(TimeUnit.SECONDS.convert(millis, TimeUnit.MILLISECONDS), TimeUnit.SECONDS); 
+0

TimeUnit nedir burada? hangi sınıftan geliyor? jdk – Panther

+2

@Panther evet'in bir parçasıdır, çünkü Java 5 ... https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html – assylias

+0

Teşekkürler farkında değildim – Panther

1

Neden bu

long value = 1459245759880L; 
System.out.println(1000 * (value/1000)); 
3
long x = 1459245759880; 
long y = x - (x % 1000); 

Hatırlatıcı almak ve sonra gerçek değerden çıkarmak için basitçe modulo operatörünü kullanın.