gpt4 book ai didi

javascript - Chrome 无法解析日期,但 IE 可以

转载 作者:行者123 更新时间:2023-11-29 14:40:25 24 4
gpt4 key购买 nike

我在解析网站日期时遇到问题。它曾经在 IE 和 Chrome 上运行良好(我还没有尝试过 Firefox)。但是最近我无法在 chrome 上解析日期。

我从数据库中获取的日期字符串类似于“Oct 17 2016 12:00AM”

这是我用来调试问题的代码

console.log("String = "+item.DueDate);
console.log("new Date = " + new Date(item.DueDate));
console.log("Date Parse = " + Date.parse(item.DueDate));
console.log("Moment Parse = " + moment(item.DueDate));

这是 IE 返回的内容:

String = Oct 17 2016 12:00AM
new Date = Mon Oct 17 2016 00:00:00 GMT-0400 (Eastern Daylight Time)
Date Parse = 1476676800000
Moment Parse = 1476676800000

这是 Chrome 返回的内容:

String = Oct 17 2016 12:00AM
new Date = Invalid Date
Date Parse = NaN
Moment Parse = NaN

我在我的函数之一中使用 Date.parse() 来查找日期之间的差异:

function daydiff(first, second) {
return Math.round((second - first) / (1000 * 60 * 60 * 24));
}

var dif = daydiff(Date.parse(item.DueDate), Date.parse(item.DateShipped));

我应该如何处理我的日期字符串才能让它在 chrome 和 Internet Explorer 上工作?

固定

所以我通过更改我的网络 api 调用以返回 DateTime 而不是字符串来修复它。

最佳答案

切勿使用 Date 构造函数(或 Date.parse,它们等效于解析)解析字符串,因为它几乎完全依赖于实现。即使是 ECMA-262 中指定的一种格式也不能被所有使用的浏览器可靠地解析。

使用提供解析和格式化的定制函数或库,并始终将要解析的格式传递给解析器。合适的库是 moment.js , date.jsfecha.js , 但还有很多其他的。

定制函数可能如下所示:

function parseSpecia(s) {
var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};
var h;
if (/a[mp]$/i.test(s)) {
h = /am$/i.test(s)? 0 : 12;
s = s.replace(/a[mp]$/i,'');
}
var b = s.split(/[ :]/)
return new Date(b[2], months[b[0].toLowerCase().substr(0,3)], b[1],(b[3]%12)+h, b[4]);
}

var s = 'Oct 17 2016 12:00AM';
console.log(parseSpecia(s));

而使用库看起来像:

fecha.parse('Oct 17 2016 12:00AM','MMM DD YYYY hh:mm:zz');

关于javascript - Chrome 无法解析日期,但 IE 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39046996/

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