我正在使用日历,但在 IE 中 eventStartDay = new Date(eventStart.getTime() + (24 * 60 * 60 * 1000*(days))); 不管用。我用函数 parseISO8601("yyyy-mm-dd") 替换 new Date 但我不知道如何仅使用秒来获取日期
问问题
334 次
2 回答
0
你说过你得到NaN
了结果。这告诉我们要么days
是NaN
,要么它eventStart
的潜在价值是NaN
。
我的猜测是您要求Date
构造函数为您解析一个字符串,将结果放入 中eventStart
,而不是检查它是否有效。记录为受支持的唯一字符串格式new Date(string)
是:
无论
Date#toString
吐出什么(未定义,但必须在输入时接受),ISO-8601 的简化形式(在旧浏览器中不一定支持,在 ES5 中是新的)
...但实际上,所有现代浏览器(包括 IE)也将允许您使用 format "yyyy/mm/dd"
。
因此,我怀疑您可能正在尝试解析您正在测试的 IE 版本不支持的日期字符串。例如,"yyyy-mm-dd"
即使对"yyyy/mm/dd"
.
所以我怀疑这是你遇到的问题,eventStart
实际上是无效的,它污染了整个计算。修复它可能就像.replace(/-/g, "/")
事先在字符串上做 a 一样简单。如果您的格式比 更复杂yyyy-mm-dd
,您可能会查看MomentJS或类似的库。
于 2012-06-01T13:53:45.103 回答
0
我发现所有浏览器都支持以下格式,所以我使用了其中的格式,这样它就不会在任何浏览器中崩溃。
var d = new Date(2011, 01, 07); // yyyy, mm-1, dd
var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
var d = new Date("02/07/2011"); // "mm/dd/yyyy"
var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"
var d = new Date(1297076700000); // milliseconds
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UTC
于 2012-06-05T06:58:30.090 回答