如何将当前时间戳以毫秒为单位舍入为秒?
如果这是我当前的时间戳(以毫秒为单位) -
1384393612958
如果我四舍五入到最接近的秒,那会是这样的吗?
Time in MS rounded off to nearest Second = 1384393612000
我可能需要在Java和C ++中都这样做。
答案 0 :(得分:4)
如果您使用的是Python:
old_number = 1384393612958
new_number = 1000 * (old_number / 1000)
print new_number
基本上你想要使用一个整数,除以一千(以减去毫秒),然后乘以千,以便将ms值四舍五入为秒。
答案 1 :(得分:4)
在Java中,您可以将Calendar用于以下内容:
Calendar cal = Calendar.getInstance().setTimeInMillis(millisec);
int seconds = cal.get(Calendar.SECONDS);
或者(也可以用于C ++)你可以这样做:
int sec = ((millisec + 500) / 1000);
添加500毫秒后,您可以正确地对数字进行舍入。
答案 2 :(得分:2)
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() ;
答案 3 :(得分:0)
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();
实际查询字符串包含:
createdOn ='" + new SimpleDateFormat(" yyyy-MM-dd HH:mm:ss")。format(roundedCreatedOn)+"'"
答案 4 :(得分:0)
在javascript中,使用moment.js库:
moment(timestamp).startOf('second')