如何在java中获取以毫秒为单位的当前小时?

时间:2015-05-04 11:50:42

标签: java date

如何将当前小时作为纪元以来的毫秒计数?

如果时间是凌晨4点20分。 然后如何以毫秒为单位获取当前小时,以便它代表凌晨4点。

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() ;