第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

過去的夏令時(shí)過渡規(guī)則,JavaScript時(shí)區(qū)錯誤

過去的夏令時(shí)過渡規(guī)則,JavaScript時(shí)區(qū)錯誤

牛魔王的故事 2019-11-18 18:27:05
在2007年,我們改用夏時(shí)制的日子發(fā)生了變化。在此更改之前,屬于DST擴(kuò)展范圍的任何日期都將報(bào)告Chrome和Firefox中不正確的時(shí)區(qū)偏移。就像Firefox和Chrome不用注意DST過去的日子不同。如果運(yùn)行以下腳本,它將報(bào)告偏移量為240分鐘。這是不正確的,它應(yīng)該報(bào)告300分鐘。IE10可以正確執(zhí)行此操作。有人知道解決辦法嗎?alert(new Date('11/04/2004').getTimezoneOffset());更新:這是我剛剛一起學(xué)習(xí)的一段有趣的代碼(請參見下文)。令人驚訝的是,除了IE之外,每種日期在大多數(shù)瀏覽器中的距離還有多遠(yuǎn)。比較開始日期和結(jié)束日期與此:http : //www.timeanddate.com/worldclock/timezone.html?n=77&syear=2000我最終只是用我自己的Date原型將getTimezoneOffset替換為Date的原型,該原型根據(jù)硬編碼表進(jìn)行計(jì)算。這對我們有用,因?yàn)槲覀儍H在美國開展業(yè)務(wù),但這是我能想到的最糟糕的解決方案...<!DOCTYPE html><html>    <head>        <title>Moment Test</title>        <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.0.0/moment.min.js"></script>        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>        <script>var lastOffset = null;var $tbody = null;var endDate = new Date('01/01/2021');function addDate(d) {    if($tbody === null)        $tbody = $('#dates');    var offset = d.getTimezoneOffset();    var s = '';    if(lastOffset != offset) {        if(lastOffset != null)            s = '<tr style="background-color: red;">';        lastOffset = offset;    }    else {        s = '<tr>';    }    var m = new moment(d);    s += '<td>' + m.format('YYYY-MM-DD') + '</td><td>' + m.format('YYYY-MM-DDTHH:mm:ssZ') + '</td><td>' + m.format('YYYY-MM-DDTHH:mm:ss') + '</td><td>' + offset + '</td></tr>';    $tbody.append($(s));    d.setDate(d.getDate() + 1);    if(d < endDate)        window.setTimeout(function(){addDate(d)}, 0);}        </script>    </head>    <body>        <button onclick="addDate(new Date('01/01/1980'));">Fill Table</button>        <table border="1">            <thead><tr><th>Date</th><th>Date 2</th><th>Date 3</th><th>TZ Offset</th></tr></thead>            <tbody id='dates'></tbody>        </table>    </body></html>
查看完整描述

2 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個贊

實(shí)際上是指定行為,以使用當(dāng)前的DST規(guī)則,而忽略在檢查的特定日期/時(shí)間到位的規(guī)則。參見ES5 15.9.1.8:


“ ECMAScript的實(shí)現(xiàn)不應(yīng)嘗試確定確切的時(shí)間是否受夏時(shí)制的約束,而應(yīng)確定如果當(dāng)時(shí)使用了當(dāng)前的夏時(shí)制算法,則夏時(shí)制是否會生效。這避免了諸如此類的復(fù)雜性??紤]到該語言環(huán)境全年觀察夏令時(shí)的情況。”


規(guī)則是:將當(dāng)前DST規(guī)則應(yīng)用于指定的任何時(shí)間。這會導(dǎo)致胡言亂語,但這正是ECMAScript所要求的。


在將來的ECMAScript版本中,這種行為甚至可能會改變,要求在所有時(shí)間點(diǎn)都使用實(shí)際的DST規(guī)則。最初并不需要這樣做,因?yàn)樗鼤o實(shí)現(xiàn)者帶來發(fā)送tzdata的負(fù)擔(dān)。語言已經(jīng)變得足夠重要,但是從長遠(yuǎn)來看,也許每個人都必須掌握它。但是就我所知,這種變化可能還需要數(shù)年,所以不要屏住呼吸。


查看完整回答
反對 回復(fù) 2019-11-18
?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個贊

我已經(jīng)確認(rèn)這是JavaScript中的錯誤。


在遵循夏時(shí)制的美國常見時(shí)區(qū)進(jìn)行測試

東部,中部,山脈,太平洋

已在Chrome,F(xiàn)irefox,Safari中測試,并且失?。ㄗ钚掳姹荆?/p>

在IE 6、7、8、9中進(jìn)行了測試,但失敗了。

在IE 10中測試并通過(不受影響)。

在Windows 7、8和Mac OSX上進(jìn)行了測試。

這很麻煩。有人知道根本原因嗎?


我以為可能是WebKit錯誤,但是Firefox使用Gecko。


我檢查了各種問題列表,在任何地方都找不到此特定問題。也許我錯過了一些東西。我不確定在哪里提交錯誤報(bào)告,因?yàn)樗鼤绊懚鄠€地方。


也許這是JavaScript的核心錯誤?我真的很難相信這個基本的東西已經(jīng)被單元測試所忽略了。


我認(rèn)為這可能只是影響Windows系統(tǒng),因?yàn)樵摬僮飨到y(tǒng)具有Windows時(shí)區(qū)而不是TZDB,但是事實(shí)并非如此,因?yàn)樗舶l(fā)生在Mac上。


我們都知道JavaScript日期是很麻煩的,但是我認(rèn)為我們至少可以依靠它。您甚至不必查看偏移量,也不必進(jìn)行解析。只需檢查以下值:


new Date(2004,10,4)  // recall, js months are 0-11, so this is Nov. 4 2004.

在2004年的美國,夏令時(shí)于10月31日的凌晨2:00結(jié)束,而時(shí)鐘又回到了凌晨1:00。因此,到11月4日,他們肯定都應(yīng)該在標(biāo)準(zhǔn)時(shí)間上,但事實(shí)并非如此!例如,在控制臺上的Chrome開發(fā)者工具中,時(shí)鐘設(shè)置為美國東部時(shí)區(qū):


> new Date(2004,10,7,0,0)

  Sun Nov 07 2004 00:00:00 GMT-0400 (Eastern Daylight Time)


> new Date(2004,10,7,1,0)

  Sun Nov 07 2004 01:00:00 GMT-0500 (Eastern Standard Time)

過渡日期定在11月7日。這是繼目前生效的“ 11月的第一個星期日”規(guī)則之后的,但是在2004年,該規(guī)則應(yīng)該是“ 10月的最后一個星期日”的舊規(guī)則。


更新1


它似乎限于瀏覽器。 它還在Node.js中失敗

只是為了證明IE很好,這是IE10的輸出:

有趣的是,IE和Firefox將1:00歧義解決為“夏令時(shí)”,而Chrome將其解決為標(biāo)準(zhǔn)時(shí)間,但這是一個單獨(dú)的問題。它確實(shí)選擇了正確的過渡日期。


更新2


值得一提的是,在最新的Firefox 21中,確實(shí)發(fā)生了此問題,但其呈現(xiàn)方式卻有所不同,因?yàn)榧词故褂昧苏_的偏移量,另一個問題卻又切換了標(biāo)準(zhǔn)名稱的白天設(shè)置。換句話說,在Firefox上,輸出如下:


查看完整回答
反對 回復(fù) 2019-11-18
  • 2 回答
  • 0 關(guān)注
  • 828 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號