Liekkas_BX 2017-07-28 10:01 采纳率: 0%
浏览 930
已采纳

java基础知识,谁能告诉我静态方法调用怎么会使结果值叠加呢?

静态方法:
因为获取的是UTC时间,需要转成北京时间:

 public static Date getLocaleDate(Date date,
            int originalTimeZone,int localeTimeZone){

        Long newTime = date.getTime();
        newTime+=(localeTimeZone-originalTimeZone)*60*60*1000;
        Date newDate = new Date(newTime);
        return  newDate;
    }

调用:

 vo.setCreateByTime(
                    TimeUtils.getLocaleDate(vo.getCreateByTime(), 0, 8));//加了8小时

            vo.setLastModifyTime(
                    TimeUtils.getLocaleDate(vo.getCreateByTime(), 0, 8));//怎么又加了8小时?
                    //此处打印时间与下面打印的相同
            Date newdate =TimeUtils.getLocaleDate(vo.getCreateByTime(), 0, 8);
            System.out.println(TimeUtils.getLocaleDate(vo.getCreateByTime(), 0, 8));

问题:发现每调用一次静态方法,结果值是叠加的,比如:最开始时间部分为1:00:00,调用一次后为9:00:00,(理所当然),可再调用一次,参数不变(可以保证,也打印结果验证了),但结果却变为17:00。

谁能给我解释下?

  • 写回答

6条回答 默认 最新

  • Helloworld先生 2017-07-29 16:56
    关注

    第一行 vo.setCreateByTime 已经更改了 createByTime 的值(加了8小时)
    第二行 vo.setLastModifyTime 的 参数是 vo.getCreateByTime (此时 第一行已经把 createByTime 的值+8小时了),然后你又加了8小时。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程