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

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

為什么 Date.parse('COVINGTONOFFICE-2') 返回真實日期?

為什么 Date.parse('COVINGTONOFFICE-2') 返回真實日期?

泛舟湖上清波郎朗 2022-06-09 16:56:23
console.log(Date.parse('COVINGTONOFFICE-2')) // 981003600000console.log(new Date('COVINGTONOFFICE-2').toDateString()) // Thu Feb 01 2001為什么這會返回有效日期?我錯過了什么?如果我想解析一個字符串,例如“2018 年 11 月 26 日星期一 18:03:33 GMT-0500(東部標準時間)”,并將其正確解析為日期,但上面的“COVINGTONOFFICE-2”失敗日期測試,如果不將我自己的正則表達式組合在一起,我將如何以正確的方式進行?這是我嘗試過的:console.log(moment('COVINGTONOFFICE-2').isValid()) // trueconsole.log(moment.isDate('COVINGTONOFFICE-2')) // false... good!// so now I want to make sure that a date that has been stringified is still able to be parsed as valid dateconsole.log(Date.parse('Mon Nov 26 2018 18:03:33 GMT-0500 (Eastern Standard Time)')) // trueconsole.log(moment.isDate('Mon Nov 26 2018 18:03:33 GMT-0500 (Eastern Standard Time)')) // false... damn
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

只是為了鞏固我的發(fā)現,因為它們在評論中,其他人可能難以閱讀或找到:

  • Chromium 引擎似乎為Date.parse('COVINGTONOFFICE-2')和返回相同的結果Date.parse('2')。它們都返回從 21 世紀初開始計算的月份,即2給您 2001 年 2 月 1 日。這僅適用于12:任何超出該數字的數字均無效。

  • Date.parse('COVINGTONOFFICE-2')返回我測試過的其他瀏覽器的無效日期

Chromium 的 V8 引擎有一些內部啟發(fā)式方法,可以確定如何解析看起來像日期的字符串:并盡最大努力嘗試猜測它。對于其他瀏覽器,他們干脆放棄了。

這符合建議,Date.parse()應避免使用。通過擴展,它甚至不應該用于模棱兩可或看起來不像日期的字符串。正如MDN 文檔所指出的,瀏覽器有不同的內部啟發(fā)式/實現來執(zhí)行解析:

不同主機解析日期字符串的方式仍然存在許多差異,因此應該手動解析日期字符串(如果要適應許多不同的格式,庫可以提供幫助)。

我已經編譯了一個快速的 ASCII 表來顯示我到目前為止的發(fā)現:

+---------------------------------+--------------------+---------+-----------------+---------+---------------------+

|             Browser             | Chrome/Brave/Opera | Firefox |     Safari      |  IE11   | Edge (non-Chromium) |

+---------------------------------+--------------------+---------+-----------------+---------+---------------------+

| Date.parse('COVINGTONOFFICE-2') | Thu Feb 01 2001    | Invalid | Invalid         | Invalid | Invalid             |

| Date.parse('2')                 | Thu Feb 01 2001    | Invalid | Tue Jan 01 0002 | Invalid | Invalid             |

| Date.parse(2)                   | Thu Jan 01 1970    | NaN     | Thu Jan 01 1970 | NaN     | NaN                 |

+---------------------------------+--------------------+---------+-----------------+---------+---------------------+

作為對您的附加問題的回答:我認為您使用本機日期解析器面臨的問題與 Moment.jsmoment(...)解析器相同。兩者都相當寬容,因此它們可能會'COVINGTONOFFICE-2'根據瀏覽器實現解釋為有效字符串。


Moment.js 確實提供了手動指定日期字符串格式的可能性,但它不支持以語言環(huán)境格式(即,...)表示一天中的任何一周的Mon任何Tue標記Wed。您可以實現的最接近的是指定LLLL格式:它似乎適用于使用以下new Date().toString()方法打印出的日期:


// true

console.log(moment('Mon Nov 26 2018 18:03:33 GMT-0500 (Eastern Standard Time)', 'LLLL').isValid());


// false

console.log(moment('COVINGTONOFFICE-2', 'LLLL').isValid());

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>


這對我來說越來越像一個 XY 問題:你必須將字符串解析為日期嗎?沒有其他方法可以檢索 ISO 有效的日期格式嗎?


查看完整回答
反對 回復 2022-06-09
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號