由于时间戳最近超过了15亿,我的一个剧本中出现了一个奇怪的(显然是随机的)错误。
我要初始化一个dateTimePicker,我这样做了:
$('#datepickerfield').data('DateTimePicker').date(new Date(1502173800000));
1502173800000当然是毫秒时间戳。大多数情况下,它只是起作用。
但正如你所看到的,某种程度上15021738 ......可能(事实上,有时候,IS)被错误地解释为15/02/1738(法国dd / mm / yyyy格式)......事实并非如此时间戳以1499或甚至1500开头,错误只是在时间戳开始1501开始(导致1月15日),依此类推。
它确实看起来很随机,非常烦人,几乎不可能在服务器端修复(太多的情况需要考虑,甚至像15/02/1738这样的日期在某些情况下可能是合法的)
所以我有两个问题:
感谢您的关注
丹尼斯
答案 0 :(得分:1)
事实证明问题与Date无关(我用moment.unix(timestamp)替换了调用,问题仍然存在)。
首先,它毕竟不是那么随意。从时间戳到日期的转换仅在“可能”时发生,即当四个第一个数字看起来像一个可能的“ddmm”(自1501 ......),后面的四个数字像“yyyy”(几乎总是)和2个跟随之后“hh”,即0到23之间。
- HAPPY END -
这个奇怪的解析错误是由于datetimepicker的选项(这里的这个:http://eonasdan.github.io/bootstrap-datetimepicker/)默认为false。
useStrict: true
有关详细信息(选项本身会影响Moment.js库),请参阅http://eonasdan.github.io/bootstrap-datetimepicker/Options/#usestrict