1,Calendar now = Calendar.getInstance(); 2,now.setTimeInMillis(System.currentTimeMillis()); 3,LOGGER.info("System.currentTimeMillis------------------"+System.currentTimeMillis()); 4,LOGGER.info("tmp[0]------------------"+tmp[0]);//08 5,now.set(Calendar.HOUR_OF_DAY, Integer.parseInt(tmp[0])); 6,LOGGER.info("now timeInMillis()00000000000--------"+now.getTimeInMillis());
这段代码出现了特别奇怪的现象;(在Windows上没有任何问题,在linux就出现了问题)。
看一下日志。
2019-08-29 20:47:27.189 [INFO ] com.suntang.scm.common.utils.DateUtils.getStartTime(DateUtil
System.currentTimeMillis------------------1567126047189
2019-08-29 20:47:27.189 [INFO ] com.suntang.scm.common.utils.DateUtils.getStartTime(DateUtil
tmp[0]------------------08
2019-08-29 20:47:27.189 [INFO ] com.suntang.scm.common.utils.DateUtils.getStartTime(DateUtil
now timeInMillis()00000000000--------1567082847189
System.currentTimeMillis是没有问题的,在执行第5行后 出现了奇怪的现象,时间变了
我只是想把小时设成8点,结果它就变了,再偷瞄一眼打印日志时间,竟然相差了12个小时。
通过设置时区就能解决这个问题,一行代码
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
但是还是有点不明白,为什么 System.currentTimeMillis是当前时间,打印日志却差了12个小时,执行
now.set(Calendar.HOUR_OF_DAY, Integer.parseInt(tmp[0]));也会相差12个小时。
虽然问题 好解决,但是不理解。。。。。。