摘要:瀏覽器的問(wèn)題哈哈哈哈,找到問(wèn)題了,就是的坑。新增的參數(shù)和使程序能夠指定使用哪種語(yǔ)言格式化規(guī)則,允許定制該方法的表現(xiàn)。在舊版本瀏覽器中,和參數(shù)被忽略,使用的語(yǔ)言環(huán)境和返回的字符串格式是各自獨(dú)立實(shí)現(xiàn)的。
Date.prototype.toLocaleDateString 這個(gè)方法并不常用,但是不排除一些同學(xué)會(huì)喜歡。筆者還是奉勸這部分同學(xué)戒掉這個(gè)方法吧。有時(shí)候被坑死了還不知道是什么情況。剛剛從坑里了爬出來(lái),所以總結(jié)一下。
從一個(gè)真實(shí)的故事開(kāi)始:
夏日的早晨,卻是很清爽。某程序員一覺(jué)醒來(lái)就收到測(cè)試報(bào)的一個(gè)問(wèn)題,“頁(yè)面怎么什么都不顯示,js還報(bào)錯(cuò)了”。美好的早晨就此毀掉了...
????????????????
程序員表示一臉懵逼,心想,昨天不是還測(cè)試得好好的嗎,頁(yè)面也沒(méi)有js報(bào)錯(cuò),今天怎么就跪了?不科學(xué)呀,看看報(bào)錯(cuò)uncaught TypeError: cannot read property "length" of undefined. 媽蛋,空指針, 一定是后臺(tái)接口的問(wèn)題。
說(shuō)干就干,打開(kāi)調(diào)試器一下接口請(qǐng)求,完全沒(méi)問(wèn)題呀。什么鬼?
????????????????
于是開(kāi)啟js調(diào)試模式,看到錯(cuò)誤報(bào)在一下這一段:
const dateTransform = date => { const tmp = date.split("/"); if (tmp[1].length !== 2) { tmp[1] = "0" + tmp[1]; } if (tmp[2].length !== 2) { tmp[2] = "0" + tmp[2]; } return tmp.join("-"); } dateTransform(new Date().toLocaleDateString());
看到這段代碼瞬間崩潰,怎么用這種方式處理時(shí)間顯示 ????????????????
姑且認(rèn)為某猿是加班到凌晨2點(diǎn)寫(xiě)的代碼吧(同個(gè)物種之間要懂得體諒)。該猿的思路是轉(zhuǎn)換形如"2017/5/12"這樣的字符串為"2017-5-12",講道理可以跑起來(lái)的。但是為什昨天的代碼,到了今天就無(wú)法執(zhí)行了呢?一定是toLocaleDateString的問(wèn)題。
筆者在firefox中執(zhí)行了這一段代碼,完全正常,但是在chrome中報(bào)錯(cuò)。瀏覽器的問(wèn)題?
# chrome console.log(new Date().toLocaleDateString()) > 2017-5-12 #firefox console.log(new Date().toLocaleDateString()) > 2017/5/12
哈哈哈哈,找到問(wèn)題了,就是toLocaleDateString的坑。至于為什么昨天能跑,今天不能跑,秒懂啦。chrome升級(jí)了。從57升級(jí)到了58。
#Chrome < 58 > new Date().toLocaleDateString() > output: "2017/5/12" #Chrome >= 58 > new Date().toLocaleDateString() > output: "2017-5-12"
此猿想,這個(gè)問(wèn)題也不能完全把鍋甩給chrome,dateTransform明顯有問(wèn)題啊,于是改:
const dateTransform = date => { const tmp = date.split("/"); if(tmp.length === 1){ return date; } if (tmp[1].length !== 2) { tmp[1] = "0" + tmp[1]; } if (tmp[2].length !== 2) { tmp[2] = "0" + tmp[2]; } return tmp.join("-"); } dateTransform(new Date().toLocaleDateString());
然后全世界清靜了。
但是某猿思索片刻還是果斷刪掉了這一段,用moment去實(shí)現(xiàn)Date格式化。
后記:
首先看看toLocaleDateString是什么東西:
toLocaleDateString() 方法返回該日期對(duì)象日期部分的字符串,該字符串格式因不同語(yǔ)言而不同。新增的參數(shù) locales 和 options 使程序能夠指定使用哪種語(yǔ)言格式化規(guī)則,允許定制該方法的表現(xiàn)(behavior)。在舊版本瀏覽器中, locales 和 options 參數(shù)被忽略,使用的語(yǔ)言環(huán)境和返回的字符串格式是各自獨(dú)立實(shí)現(xiàn)的。
from https://developer.mozilla.org...
這方法最大的問(wèn)題是在不同的瀏覽器中得到的結(jié)果是不一樣的,例如
# firefox > new Date().toLocaleDateString() > output: "2017/5/12" #IE11 > new Date().toLocaleDateString() > output: "2017-5-12" #Chrome < 58 > new Date().toLocaleDateString() > output: "2017/5/12" #Chrome >= 58 > new Date().toLocaleDateString() > output: "2017-5-12"
所以盡可能不要用toLocaleDateString
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82960.html
摘要:上顯示出來(lái)時(shí)間本地系統(tǒng)顯示時(shí)間發(fā)送前控制臺(tái)打印出來(lái)瀏覽器網(wǎng)絡(luò)中監(jiān)測(cè)顯示解決方案只有在發(fā)送時(shí)間類型的數(shù)據(jù)時(shí)會(huì)進(jìn)行轉(zhuǎn)換,導(dǎo)致相差個(gè)小時(shí),但是我發(fā)送前就將其轉(zhuǎn)換成字符串,就不會(huì)造成這樣的結(jié)果了。 創(chuàng)建時(shí)間 使用new Date(),可以看見(jiàn)有5種構(gòu)造函數(shù) showImg(https://segmentfault.com/img/remote/1460000013946509); co...
摘要:想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳博客一年百來(lái)篇優(yōu)質(zhì)文章等著你獲取今天的時(shí)分秒常用于開(kāi)始日期的獲取中國(guó)標(biāo)準(zhǔn)時(shí)間獲取一個(gè)月前的日期中國(guó)標(biāo)準(zhǔn)時(shí)間獲取一個(gè)月前的時(shí)分秒中國(guó)標(biāo)準(zhǔn)時(shí)間獲取前一天的日期中國(guó)標(biāo)準(zhǔn)時(shí)間加一天中國(guó)標(biāo)準(zhǔn)時(shí)間減一天中國(guó)標(biāo)準(zhǔn)時(shí)間獲取今 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 1.獲取今天的0時(shí)0分0秒(常用于開(kāi)始日期的獲?。?new Date(new Dat...
摘要:想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳博客一年百來(lái)篇優(yōu)質(zhì)文章等著你獲取今天的時(shí)分秒常用于開(kāi)始日期的獲取中國(guó)標(biāo)準(zhǔn)時(shí)間獲取一個(gè)月前的日期中國(guó)標(biāo)準(zhǔn)時(shí)間獲取一個(gè)月前的時(shí)分秒中國(guó)標(biāo)準(zhǔn)時(shí)間獲取前一天的日期中國(guó)標(biāo)準(zhǔn)時(shí)間加一天中國(guó)標(biāo)準(zhǔn)時(shí)間減一天中國(guó)標(biāo)準(zhǔn)時(shí)間獲取今 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 1.獲取今天的0時(shí)0分0秒(常用于開(kāi)始日期的獲?。?new Date(new Dat...
摘要:想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳博客一年百來(lái)篇優(yōu)質(zhì)文章等著你獲取今天的時(shí)分秒常用于開(kāi)始日期的獲取中國(guó)標(biāo)準(zhǔn)時(shí)間獲取一個(gè)月前的日期中國(guó)標(biāo)準(zhǔn)時(shí)間獲取一個(gè)月前的時(shí)分秒中國(guó)標(biāo)準(zhǔn)時(shí)間獲取前一天的日期中國(guó)標(biāo)準(zhǔn)時(shí)間加一天中國(guó)標(biāo)準(zhǔn)時(shí)間減一天中國(guó)標(biāo)準(zhǔn)時(shí)間獲取今 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)文章等著你! 1.獲取今天的0時(shí)0分0秒(常用于開(kāi)始日期的獲取) new Date(new Dat...
閱讀 1828·2023-04-26 02:32
閱讀 576·2021-11-18 13:12
閱讀 2459·2021-10-20 13:48
閱讀 2528·2021-10-14 09:43
閱讀 3840·2021-10-11 10:58
閱讀 3516·2021-09-30 10:00
閱讀 2943·2019-08-30 15:53
閱讀 3496·2019-08-30 15:53