• <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://m.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一区二区| 人妻一区二区三区三区| 真人无码作爱免费视频| 少妇厨房愉情理9仑片视频| 2022最新国产在线不卡a| 国产一区二区三区在线观看免费 | 2021国产精品视频网站| 精品不卡一区二区三区| 蜜桃伦理一区二区三区| jizz国产免费观看| 99精品视频在线观看免费专区| 狠狠色综合久久狠狠色综合| 久久免费观看归女高潮特黄| 377P欧洲日本亚洲大胆| 日日躁狠狠躁狠狠爱| 亚洲精品国偷自产在线99正片| 午夜AAAAA级岛国福利在线| 精品视频在线观看免费观看| 国产区精品福利在线观看精品| 精品人妻伦一二三区久久aaa片| 熟女丝袜美腿亚洲一区二区三区| 久久久久成人精品无码中文字幕| 无码人妻aⅴ一区二区三区蜜桃| 久久综合久中文字幕青草| 双乳奶水饱满少妇呻吟免费看| 国产精品店无码一区二区三区| 国产成人综合久久二区| 成人a免费α片在线视频网站 | 欧美z0zo人禽交另类视频| 黑人巨大videosjapan| 性欧美三级在线观看| 日本边添边摸边做边爱喷水| 国产精品视频一品二区三| 免费看婬乱a欧美大片| 亚洲熟妇中文字幕日产无码| 国产亚洲精品综合99久久| 日韩欧国产精品一区综合无码| 亚洲乱码日产精品一二三| 91福利一区福利二区|