gpt4 book ai didi

javascript - 使用 Javascript 在 safari 中获取 NAN 形式的日期值

转载 作者:行者123 更新时间:2023-11-28 05:55:48 25 4
gpt4 key购买 nike

我在使用 Javascript 比较某些日期时遇到了这个问题。我仅在 Safari 上遇到此问题。它在 Chrome 上运行良好。让我先解释一下我的代码。

var date='2016-05-21';
var to='2016-05-23';
var eventdate='2016-06-01 16:48:51';
function getMidnight(date) {
return (new Date(new Date(date.replace(/-/g, "/")).getFullYear(), new Date(date.replace(/-/g, "/")).getMonth(), new Date(date.replace(/-/g, "/")).getDate()));
}
from = getMidnight(date);
to = getMidnight(to).getTime() + (24 * 3600-1) * 1000;
var event1=getMidnight(new Date(eventdate) + 24 * 3600 * 1000).getTime(); var event2=(new Date(from)).getTime();
var event3=getMidnight(eventdate).getTime();
var event4=(new Date(to)).getTime();
console.log('events',event1,event2,event3,event4);

我正在尝试打印控制台消息。在 Chrome 控制台中,其显示如下所示。

events 1464719400000 1463769000000 1464719400000 1464028199000

但是在 Safari 浏览器上它无法正确显示并打印如下所示。

events NAN 1463769000000 1464719400000 1464028199000

它在 Safari 中提供 NAN。我希望它在 Safari 中打印出与在 Chrome 中相同的内容。如有任何帮助,我们将不胜感激。

最佳答案

为了使您的问题更容易,您的问题是:

new Date('2016-06-01 16:48:51')

这在 chrome 中可以正常工作,但在 safari 中不行。 mdn 谈论 ECMAScript 5 ISO-8601 格式支持说:

Alternatively, the date/time string may be in ISO 8601 format. For example, "2011-10-10" (just date) or "2011-10-10T14:48:00" (date and time) can be passed and parsed. If you include T it works:

new Date('2016-06-01T16:48:51')

您可以使用 new Date('2014-02-18T15:00:48'.replace(/\s/, 'T'))。

如果您处理很多这样的情况,我会建议使用 moment ,它似乎可以很好地处理这种情况,无论有或没有 T: 从字符串解析。此外,使用 momentjs,您的整个示例会更容易:

var minutes = moment().diff("2014-02-18 15:00:48", 'minutes');

关于javascript - 使用 Javascript 在 safari 中获取 NAN 形式的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37701363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com