gpt4 book ai didi

来自 ISO8061 的 Javascript 时间戳

转载 作者:行者123 更新时间:2023-11-29 09:59:02 25 4
gpt4 key购买 nike

在处理从 iso8061 日期获取时间戳时,我遇到了一些问题。由于某种原因,它在 Chrome 中完美运行,但在 Firefox 中导致无效日期错误。确切的行是:

var date = new Date(time.replace(/-/g,"/").replace(/[TZ]/g," ")); 

我试过通过(作为 var 时间)2011-03-09T16:46:58+00:002011-03-09T16:46:58 传递日期+00002011-03-09T16:48:37Z 根据概述的规范 http://www.jibbering.com/faq/#dates但我似乎仍然无法让它在 Firefox 中工作。事实上,最后一种方法在任何一种浏览器中都不起作用。

如果有人能帮我把这个 iso8061 日期变成时间戳,那就太好了。

谢谢,安吉洛·R。

最佳答案

看看JavaScript ISO8601/RFC3339 Date Parser :

他们的代码:

Date.prototype.setISO8601 = function(dString){
var regexp = /(\d\d\d\d)(-)?(\d\d)(-)?(\d\d)(T)?(\d\d)(:)?(\d\d)(:)?(\d\d)(\.\d+)?(Z|([+-])(\d\d)(:)?(\d\d))/;
if (dString.toString().match(new RegExp(regexp))) {
var d = dString.match(new RegExp(regexp));
var offset = 0;
this.setUTCDate(1);
this.setUTCFullYear(parseInt(d[1],10));
this.setUTCMonth(parseInt(d[3],10) - 1);
this.setUTCDate(parseInt(d[5],10));
this.setUTCHours(parseInt(d[7],10));
this.setUTCMinutes(parseInt(d[9],10));
this.setUTCSeconds(parseInt(d[11],10));
if (d[12]) {
this.setUTCMilliseconds(parseFloat(d[12]) * 1000);
}
else {
this.setUTCMilliseconds(0);
}
if (d[13] != 'Z') {
offset = (d[15] * 60) + parseInt(d[17],10);
offset *= ((d[14] == '-') ? -1 : 1);
this.setTime(this.getTime() - offset * 60 * 1000);
}
}
else {
this.setTime(Date.parse(dString));
}
return this;
};

然后你可以这样使用它:

var today = new Date();
today.setISO8601('2008-12-19T16:39:57.67Z');

可能不太舒服,但是你可以重写这个函数,或者写另一个返回基于 ISO-8601 格式的日期的函数

关于来自 ISO8061 的 Javascript 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249216/

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