我使用moment.parse
字符串+格式方法
当我致电moment("=min(C2:C4)", 'DD/MM/YYYY')
时,它会评估为有效日期
Sun Apr 02 2017 00:00:00 GMT + 0300(FLE白天时间)
我无法理解时刻如何将"=min(C2:C4)"
解析为有效日期。只是想知道,有人可以解释。
答案 0 :(得分:6)
来自Moment.js文档:
Moment的解析器非常宽容,这可能会导致意外/意外行为。
简短回答:由于您预期的松散格式,所以会在2
作为日期解析,4
作为月份。< / p>
答案很长:
如果在控制台中运行命令并查看结果,则可能更容易实现这一点。我建议先看看那里,我会解释下面的重要部分。
您已将自己的字符串指定为"=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天。没有给出年份,所以时刻假定它是当前年份。没有给出时间,因此它假设了一天的开始。
如果您不想要这种行为,则应将第3个/最后一个参数传递为true(严格匹配)。查看http://momentjs.com/docs/#/parsing/string-format/了解详情。