如何将当前小时作为纪元以来的毫秒计数?
如果时间是凌晨4点20分。 然后如何以毫秒为单位获取当前小时,以便它代表凌晨4点。
答案 0 :(得分:5)
使用Java 8 ...
LocalDateTime ldt = LocalDateTime.of(2015, Month.MAY, 4, 4, 30);
ldt = ldt.withMinute(0).withSecond(0).withNano(0);
long millisSinceEpoch = ldt.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
基本思路是将“时间”归零你不想要的元素并将结果转换为毫秒......
如果您不喜欢打字,可以使用......
ldt = ldt.truncatedTo(ChronoUnit.HOURS);
而不是ldt = ldt.withMinute(0).withSecond(0).withNano(0)
答案 1 :(得分:4)
你可以这样试试。
Calendar c = Calendar.getInstance(); //Get current time
//set miliseconds,seconds,minutes to 0 so we get exactly the hour
c.set(Calendar.MILLISECOND, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MINUTE, 0);
// This gets the time in milliseconds
long result=c.getTime().getTime();
答案 2 :(得分:2)
Long time = System.currentTimeMillis();
time = time / 3600000;
time = time * 3600000;
或更短的版本:
Long time = (System.currentTimeMillis()/3600000)*3600000;
注意:3600000 = 60分钟* 60秒* 1000毫秒。
理由:当你将第一个整数除以3600000时,你将失去"失去"有关分钟,秒和毫秒的信息。但结果是以小时为单位,而不是以毫秒为单位。要让时间以毫秒为单位,只需乘以3600000。
乍一看,它可能看起来除以3600000并乘以3600000将相当于"什么都不做",但由于整数运算,结果就是你想要的(摆脱分钟,秒)和毫秒信息)。
答案 3 :(得分:1)
在Joda-Time 2.7中,在DateTime
对象上调用getMillisOfSecond
方法返回int
。
int millisOfSecond = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).getMillisOfSecond() ;