gpt4 book ai didi

javascript - XML 日期时间到 Javascript 日期对象

转载 作者:数据小太阳 更新时间:2023-10-29 02:15:23 25 4
gpt4 key购买 nike

所以我正在使用从基于 xml 的 api 获取的 ajax 编写应用程序。该 API 以下列格式返回日期:

2011-11-12T13:00:00-07:00

我需要将其作为标准的 JavaScript 日期对象获取

var myDate = new Date('2011-11-12T13:00:00-07:00');

在除 ie8 和 ie7 之外的所有浏览器中都运行良好。我只是不明白为什么,而且似乎找不到任何关于如何专门为 ie7-8 格式化的文档。我知道必须有一个聪明的方法来做到这一点。请帮忙。谢谢。

最佳答案

唯一聪明的方法是解析字符串并手动创建一个日期对象。这并不难:

var dateString = '2011-11-12T13:00:00-07:00';

function dateFromString(s) {
var bits = s.split(/[-T:]/g);
var d = new Date(bits[0], bits[1]-1, bits[2]);
d.setHours(bits[3], bits[4], bits[5]);

return d;
}

您可能想要设置位置的时间,因此您需要将时区偏移应用于创建的时间对象,这并不难,除了 javascript 日期对象将以分钟为单位的偏移量添加到获取 UTC 的时间,而大多数时间戳减去偏移量(即 -7:00 表示 UTC - 7 小时以获得本地时间,但 javascript 日期时区偏移量将为 +420)。

允许偏移:

function dateFromString(s) {
var bits = s.split(/[-T:+]/g);
var d = new Date(bits[0], bits[1]-1, bits[2]);
d.setHours(bits[3], bits[4], bits[5]);

// Get supplied time zone offset in minutes
var offsetMinutes = bits[6] * 60 + Number(bits[7]);
var sign = /\d\d-\d\d:\d\d$/.test(s)? '-' : '+';

// Apply the sign
offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);

// Apply offset and local timezone
d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())

// d is now a local time equivalent to the supplied time
return d;
}

当然,如果您使用 UTC 日期和时间会更简单,那么您只需创建一个本地日期对象,setUTCHours,然后是日期,您就可以开始了——日期对象将执行时区操作(前提是本地系统当然已经正确设置了...)。

关于javascript - XML 日期时间到 Javascript 日期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8178598/

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