now.set(Calendar.HOUR_OF_DAY, 8)最好设置时区

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个小时。

虽然问题 好解决,但是不理解。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值