<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java要多思考下

    成長^_^

       ::  :: 新隨筆 ::  ::  :: 管理 ::
      33 隨筆 :: 0 文章 :: 19 評論 :: 0 Trackbacks
    最近項目中實現(xiàn)了一個課程表的功能,核心功能如下:
    1、需要記錄一周里每天每個時段的課程安排,后臺錄入
    2、課程開始前,需要自動給課程關(guān)注者以各種提醒

    于是采用了這樣的實現(xiàn)方案:
    1、錄入時間只記錄當(dāng)天的時分秒對應(yīng)的毫秒數(shù)(這樣入庫的時間實際上是1970-01-01 HH:mm:ss)
    2、定時任務(wù)根據(jù)當(dāng)天所在的周數(shù)查詢當(dāng)天的課程安排,并將課程時間換算成當(dāng)天的時間(2015-09-08 HH:mm:ss),然后執(zhí)行提醒的業(yè)務(wù)

    很簡單的一個功能,但是因為時區(qū)問題出現(xiàn)了以下奇葩現(xiàn)象:

    比如1970-01-01 10:00:00被最終換算成了1970-01-01 10:30:00
    也就是說每一個入庫時間取出后都增加了不多不少半個小時

    于是開始看java.util.Date源碼,一探究竟,發(fā)現(xiàn)有這樣一段:
            BaseCalendar cal = getCalendarSystem(year);
                if (tzoffset == -1)  { // no time zone specified, have to use local
            BaseCalendar.Date ldate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.getDefaultRef());

    注意到TimeZone.getDefaultRef(),源碼如下:
        public static TimeZone getDefault() {
            return (TimeZone) getDefaultRef().clone();
        }

        /**
         * Returns the reference to the default TimeZone object. This
         * method doesn't create a clone.
         
    */
        static TimeZone getDefaultRef() {
        TimeZone defaultZone = defaultZoneTL.get();
        if (defaultZone == null) {
            defaultZone = defaultTimeZone;
            if (defaultZone == null) {
            // Need to initialize the default time zone.
            defaultZone = setDefaultZone();
            assert defaultZone != null;
            }
        }
        // Don't clone here.
        return defaultZone;
        }

    推測很有可能問題出在時區(qū)的選擇設(shè)置上,于是打印出來結(jié)果如下:
    sun.util.calendar.ZoneInfo[id="Asia/Harbin",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
    果然如此,服務(wù)器時區(qū)錯誤,于是指出這個錯誤,讓運維修正的。
    不過還是擔(dān)心運維層面帶來類似的錯誤,于是手動設(shè)置了時區(qū):

        TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
            logger.info("the default timezone info [{}]", TimeZone.getDefault());

    技術(shù)文章收藏站點












    posted on 2015-09-08 23:03 java要多思考下 閱讀(6787) 評論(1)  編輯  收藏 所屬分類: 技術(shù)研究

    評論

    # re: 【原】JAVA時區(qū)設(shè)置及時區(qū)不一致帶來的奇葩現(xiàn)象 2015-09-14 08:42 Kizi 2
    Recent projects implemented in the function of a curriculum, the core functions are as follows  回復(fù)  更多評論
      

    主站蜘蛛池模板: 久久久久亚洲AV无码专区首| 亚洲精品麻豆av| 99久久亚洲精品无码毛片| 成全视频免费观看在线看| 亚洲人成色777777在线观看| 一级毛片**免费看试看20分钟| 亚洲中文字幕无码专区 | 四虎亚洲精品高清在线观看| 91免费播放人人爽人人快乐| jlzzjlzz亚洲jzjzjz| 成人免费a级毛片| 亚洲国产成人久久精品大牛影视 | 成年人免费视频观看| 亚洲精品无码久久久久YW| 日本v片免费一区二区三区| 一区二区三区免费在线视频| 国产AⅤ无码专区亚洲AV| 亚欧免费一级毛片| 亚洲中字慕日产2021| 国产老女人精品免费视频| www成人免费观看网站| 亚洲色精品aⅴ一区区三区| 99热在线精品免费播放6| 国产亚洲福利在线视频| 四虎影在线永久免费观看| 成在线人视频免费视频| 亚洲资源在线视频| 女人18毛片水真多免费播放| 三级片免费观看久久| 久久精品亚洲日本佐佐木明希| 噼里啪啦电影在线观看免费高清| 黄色网址大全免费| 亚洲ⅴ国产v天堂a无码二区| 久久精品无码一区二区三区免费| 欧洲乱码伦视频免费国产 | 亚洲精品亚洲人成在线观看| 91免费播放人人爽人人快乐| 男女污污污超污视频免费在线看| 亚洲AV无码国产精品色午友在线 | 久久亚洲av无码精品浪潮| 8090在线观看免费观看|