我使用moment.parse
字符串+格式方法時刻JS解析奇怪的行爲
當我打電話moment("=min(C2:C4)", 'DD/MM/YYYY')
評估爲有效日期
太陽2017年4月2日00:00:00 GMT + 0300(FLE夏令時)
我無法理解瞬間如何分析"=min(C2:C4)"
到有效日期。只是想知道,有人可以解釋。
我使用moment.parse
字符串+格式方法時刻JS解析奇怪的行爲
當我打電話moment("=min(C2:C4)", 'DD/MM/YYYY')
評估爲有效日期
太陽2017年4月2日00:00:00 GMT + 0300(FLE夏令時)
我無法理解瞬間如何分析"=min(C2:C4)"
到有效日期。只是想知道,有人可以解釋。
從Moment.js文檔:
片刻的解析器是非常寬容的,而這可能導致意想不到/意外行爲。
簡短的回答:因爲你的預期寬鬆格式,時刻解析2
爲白天和4
爲一個月。
龍答:
可視化這個,如果你在一個控制檯運行命令並查看結果可能會更容易。我建議先看看那裏,我會解釋下面的重要部分。
你指定的字符串作爲"=min(C2:C4)"
和DD/MM/YYYY
您的格式,所以此刻正在尋找在普通格式的日期:每天,隨後一個月後跟一年。
moment._pf.unusedTokens[]
這是一個陣列,並具有一個值, 'YYYY';解析器沒有找到一年,但它確實找到了一天一個月......嗯。
moment._pf.unusedInput[]
這告訴我們更 - 三個值的數組:
1. '=min(C'
2. ':C'
3. ')'
貌似時刻發現2
和4
匹配天和月份。您會在moment._pf.parsedDateParts
陣列中找到這些值。
所以,這應該解釋爲什麼日期是April 2, 2017
。 3月(這是最後一個月,而不是實際解析的值,幾個月是零指數,所以它回到了「4」)和2的那一天。沒有給出年,所以現在假定它是當年。沒有時間,所以它假設一天的開始。
如果你不想要這種行爲,你應該傳遞第三個/最後一個參數爲true(嚴格匹配)。檢查http://momentjs.com/docs/#/parsing/string-format/瞭解更多詳情。