2016-03-29 2 views

ответ

4

Обычным целочисленное округление?

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

Использование Java времени (удобно, если вам нужно делать операции даты/времени на результат - в этом случае вы можете работать с моментом):

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

Более замысловатым (и, вероятно, не очень ясно):

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? из какого класса он приходит? это часть jdk – Panther

+2

@Panther да, поскольку Java 5 ... https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html – assylias

+0

Спасибо, что я не знал – Panther

1

Почему это не

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

Используйте просто оператор modulo для получения напоминания, а затем вычтите его из фактического значения.

Смежные вопросы