Как округлить текущую метку времени в миллисекундах до секунд?
Если это текущая метка времени в миллисекундах, у меня есть —
1384393612958
Если я округляюсь до ближайшей секунды, то будет ли это так?
Time in MS rounded off to nearest Second = 1384393612000
Мне может понадобиться сделать это как на Java, так и на C ++.
Если вы используете Python:
old_number = 1384393612958
new_number = 1000 * (old_number / 1000)
print new_number
По сути, вы хотите использовать целое число, разделить на тысячу (чтобы сбрить миллисекунды), а затем умножить на тысячу, чтобы получить значение мс, округленное до секунд.
В Java вы можете использовать календарь примерно так:
Calendar cal = Calendar.getInstance().setTimeInMillis(millisec);
int seconds = cal.get(Calendar.SECONDS);
В качестве альтернативы (и может работать на C ++) вы можете сделать:
int sec = ((millisec + 500) / 1000);
добавление 500 мс позволяет правильно округлить число.
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() ;
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) +»‘ «