• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            java夏令時_java-時間處理夏令時冬令時跨時區(qū)問題處理

            更新時間:2023-06-11 08:25:12 閱讀: 評論:0

            java夏令時_java-時間處理夏令時冬令時跨時區(qū)問題處理作為?個成熟的編程語?,java?然有?堆?法來解決的時間的問題。有的時候我們會因為對java?些內(nèi)置的api不是太熟悉,對某個場景不熟悉,導致遇到了棘?的問題。?如這個場景夏令時和冬令時
            夏令時和冬令時
            在做全球性的功能時絕對少不了遇到時區(qū)轉(zhuǎn)化,?般情況下使?時間戳+java內(nèi)置的api就能解決99%的問題,但是如果遇到夏令時或者冬令時的時候這個問題就可能變得不是這么容易。
            ?先記錄?下什么是夏令時和冬令時:簡單的說在這個世界上的某些國家會規(guī)定在某個?期將本國所在的時區(qū)發(fā)?改變,然后在某個時間將他改回來,進?改變的?期就是夏令時或者冬令時
            注意:這個概念深層次的東西可以???搜索引擎查找相關(guān)內(nèi)容,我這?沒有?其他?的那種解釋?如夏令時就是把表調(diào)快??時,?是使?修正時區(qū)這個概念,這么做是為了?便做下?的解釋
            夏令時和冬令時產(chǎn)?的業(yè)務(wù)場景
            舉個例?: ?個實?了夏令時和冬令時的國家在夏令有?個活動,每天11點到1?點參加,為期七天,?這7天正好過了令時變化的這?天, 這樣會導致什么問題呢?
            因為跨過令時所以跨令時之前?天的12點20分和后?天的12點20分之間相隔的并不是24?時,因為令時的變化攜帶的時區(qū)的變化,因為時區(qū)變化了,所以相同的12點20分對應的毫秒數(shù)是不同的(毫秒沒有時區(qū)問題)
            所以為期七天這個過程不能簡單使?+24?時來處理了,因為這樣就可能導致跨令時前是11點到1點,跨令時之后就是12點到2點了
            怎么解決
            java提供了?個?常?逼的api TimeZone ,專門?來處理時區(qū)問題
            有兩個api
            TimeZone itemTimeZone = TimeZone(時區(qū)名);
            這樣就很簡單了,使?這兩個api如果返回的值不相等,就說明當前時間處于某?個令時中
            進階?下,解決?下上?的需求,跨令時的時候保證?期是+1的
            解釋?下這個需求, 直接??個最基本的例?來說
            我?西班?國家的時區(qū)來做?個+24?時的天數(shù)迭代,理論上應該讓2019-10-26 4點和6點,變成2019-10-27 4點和6點
            但是應為夏令時的問題,其實變成的是成2019-10-27 3點和5點
            跑?下下?的代碼
            long oneData = 24*60*60*1000;
            //2019-10-26 04:00:00
            long startTime = 1572055200000L;
            //2019-10-26 06:00:00
            long endTime = 1572062400000L;
            SimpleDateFormat bjSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            TimeZone timeZone = TimeZone("Europe/Madrid");
            bjSdf.tTimeZone(timeZone);
            System.out.println(bjSdf.format(new Date(startTime)));
            System.out.println(bjSdf.format(new Date(endTime)));
            System.out.println(bjSdf.format(new Date(startTime+oneData)));
            System.out.println(bjSdf.format(new Date(endTime+oneData)));
            輸出:
            2019-10-26 04:00:00
            2019-10-26 06:00:00
            //跨夏令時了出現(xiàn)問題....
            2019-10-27 03:00:00
            2019-10-27 05:00:00
            所以不能這么做,直接上代碼,其實就是?個很簡單的算法題了
            public class ScopeTimeDO {
            //開始時間
            private Long startTime;
            // 結(jié)束時間
            private Long endTime;
            // 循環(huán)次數(shù) , 活動持續(xù)天數(shù)
            private Integer cycleCount;
            }
            /**
            *
            * @param scopeTimeDO 活動時間數(shù)據(jù)
            * @param timeZeno 時區(qū)信息 ?如"Europe/Madrid"
            * @return 返回活動基于持續(xù)天數(shù)構(gòu)造的毫秒時間序列
            */
            public List createTimeInterval(ScopeTimeDO scopeTimeDO,String timeZeno) { long startTime = StartTime();
            long endTime = EndTime();
            int cycleCount = CycleCount();
            int speed = 0;
            TimeZone itemTimeZone = TimeZone(timeZeno);
            List timeList = new ArrayList<>();
            while (cycleCount >=TIME_SCOPE_CYCLE_COUNT_DEFAULT_VALUE) {
            long[] item = new long[2];
            if(speed==0){
            item[0] = startTime;
            item[1] = endTime;
            speed = 1;
            }el{
            long[] last = (timeList.size()-1);
            long beforeStartP = Offt(last[0]);
            long beforeEndP = Offt(last[1]);
            item[0] = last[0]+DAY;
            item[1] = last[1]+DAY;
            long nowStartP = Offt(item[0]);
            long nowEndP = Offt(item[1]);
            item[0] = item[0] + (beforeStartP-nowStartP);
            item[1] = item[1] + (beforeEndP-nowEndP);
            }
            cycleCount--;
            timeList.add(item);
            }
            return timeList;
            }
            上?的算法簡單的說就是補償時差,當前的時間和之后的進??較,如果有差別就+上差距就?了 , 這樣就能保證在跨夏令時的時候保證時間統(tǒng)?

            本文發(fā)布于:2023-06-11 08:25:12,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/1686443112224615.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:java夏令時_java-時間處理夏令時冬令時跨時區(qū)問題處理.doc

            本文 PDF 下載地址:java夏令時_java-時間處理夏令時冬令時跨時區(qū)問題處理.pdf

            標簽:時間   問題   時區(qū)   冬令   時候
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 无码三级中文字幕在线观看| 国产AV无码专区亚洲AV漫画| 1区2区3区4区产品不卡码网站| 蜜臀av一区二区三区不卡| 久久九九99这里有视频| 亚洲AV旡码高清在线观看| 欧美亚洲另类制服卡通动漫 | 欧美日韩在线亚洲综合国产人| 国产一区二区三区不卡自拍| 亚洲男人天堂2021| 国产精品一区二区三区麻豆| 玖玖在线精品免费视频| 任我爽精品视频在线播放| 国产网曝门亚洲综合在线 | 国产中文字幕在线一区| 亚洲成色在线综合网站| 亚洲 欧美 动漫 少妇 自拍| 久久精品国产视频在热| 国产精品内射在线免费看| 精品国产一区av天美传媒| 99久久国产福利自产拍| 久久伊人精品影院一本到综合| 国产免费AV片在线看| 亚洲av伦理一区二区| 日韩中文字幕人妻一区| 久久精品女人的天堂av| 深夜福利资源在线观看| 不卡无码AV一区二区三区| 日韩区二区三区中文字幕| 97视频精品全国免费观看| 久久人人97超碰精品| 国产精品制服丝袜无码| 国内极度色诱视频网站| 国产亚洲精品久久久久久大师| 欧美~日韩~国产~中文字幕| 国产对白老熟女正在播放| 色老99久久精品偷偷鲁| 福利一区二区在线播放| 亚洲欧美在线看片AI| 久久精品国产999大香线焦| 成人又黄又爽又色的视频|