0

我正在使用日历,但在 IE 中 eventStartDay = new Date(eventStart.getTime() + (24 * 60 * 60 * 1000*(days))); 不管用。我用函数 parseISO8601("yyyy-mm-dd") 替换 new Date 但我不知道如何仅使用秒来获取日期

4

2 回答 2

0

你说过你得到NaN了结果。这告诉我们要么daysNaN,要么它eventStart的潜在价值是NaN

我的猜测是您要求Date构造函数为您解析一个字符串,将结果放入 中eventStart,而不是检查它是否有效。记录为受支持的唯一字符串格式new Date(string)是:

  1. 无论Date#toString吐出什么(未定义,但必须在输入时接受),

  2. 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 回答