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

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条)

报告相同问题?