Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中以毫秒格式获取当前小时?_Java_Date - Fatal编程技术网

如何在java中以毫秒格式获取当前小时?

如何在java中以毫秒格式获取当前小时?,java,date,Java,Date,如何从历元开始以毫秒为单位获取当前小时 比如说如果时间是凌晨4点20分。 然后,如何以毫秒为单位获取当前小时,使其代表凌晨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,

如何从历元开始以毫秒为单位获取当前小时

比如说如果时间是凌晨4点20分。 然后,如何以毫秒为单位获取当前小时,使其代表凌晨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();
用Java8

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)

或更简短的版本:

Long time = (System.currentTimeMillis()/3600000)*3600000;
注:3600000=60分钟*60秒*1000毫秒

理由:当您将第一个整数除以3600000时,您将“丢失”有关分钟、秒和毫秒的信息。但是,结果以小时为单位,而不是以毫秒为单位。要以毫秒为单位恢复时间,只需乘以3600000即可

乍一看,除以3600000和乘以3600000可能等同于“不做任何事情”,但由于整数运算,结果就是您想要的(去掉分、秒和毫秒信息)。

在2.7中,对对象调用方法以返回
int

int millisOfSecond = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).getMillisOfSecond() ;

从什么时候开始的毫秒?明白了…你能解释一下你在做什么吗?我试着在编辑中解释。从当前时间中删除分/秒/毫秒,然后将其输入milliseconds@AmitDas他正在将日历值设置为当前系统时间。这还包括时间戳,这就是他将分、秒和毫秒设置为零的原因。剩下的是日期+小时,然后他将其转换为一个长值。必须有类似于Joda的
hourOfDay().roundFloorCopy()
,不是吗?@shmosel,你可能在找
int millisOfSecond = DateTime.now( DateTimeZone.forID( "Africa/Casablanca" ) ).getMillisOfSecond() ;