Как округлить метку времени в миллисекундах до ближайших секунд?

Как округлить текущую метку времени в миллисекундах до секунд?

Если это текущая метка времени в миллисекундах, у меня есть —

1384393612958

Если я округляюсь до ближайшей секунды, то будет ли это так?

Time in MS rounded off to nearest Second = 1384393612000

Мне может понадобиться сделать это как на Java, так и на C ++.

5

Решение

Если вы используете Python:

old_number = 1384393612958
new_number = 1000 * (old_number / 1000)

print new_number

По сути, вы хотите использовать целое число, разделить на тысячу (чтобы сбрить миллисекунды), а затем умножить на тысячу, чтобы получить значение мс, округленное до секунд.

3

Другие решения

В Java вы можете использовать календарь примерно так:

Calendar cal = Calendar.getInstance().setTimeInMillis(millisec);
int seconds = cal.get(Calendar.SECONDS);

В качестве альтернативы (и может работать на C ++) вы можете сделать:

int sec = ((millisec + 500) / 1000);

добавление 500 мс позволяет правильно округлить число.

4

Instant.ofEpochMilli( 1_384_393_612_958L )
.truncatedTo( ChronoUnit.SECONDS )
.toEpochMilli()

Современный подход в Java использует классы java.time.

Instant класс представляет точку на временной шкале в UTC с разрешением наносекунд.

Instant instant = Instant.ofEpochMilli( 1_384_393_612_958L ) ;
Instant instantTrunc = instant.truncatedTo( ChronoUnit.SECONDS ) ;
long millis = instantTrunc.toEpochMilli() ;
1

This is needed to convert java date object to mysql datetime formatted string in sql queries.

Конверсия:

Calendar cal = Calendar.getInstance();
cal.setTime(this.id.getCreatedOn());
if (cal.get(Calendar.MILLISECOND) >= 500 ) {
System.out.println("Round off milliseconds to seconds");
cal.set(Calendar.SECOND, cal.get(Calendar.SECOND) + 1);
}
Date roundedCreatedOn = cal.getTime();

Фактическая строка запроса содержит:

создалOn = ‘»+ новый SimpleDateFormat (» гггг-ММ-дд ЧЧ: мм: сс «). формат (округленныйCreatedOn) +»‘ «

0
По вопросам рекламы [email protected]