我使用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/了解更多详情。