XML日期时间到Javascript日期对象
XML DateTime to Javascript Date Object
所以我正在使用ajax从基于xml的api获取一个应用程序。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 - 7hrs以获得本地时间,但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日期和时间,它会更简单,然后你只需要创建一个本地日期对象,settutchours,然后date,你就可以开始了- date对象将做时区的事情(当然,前提是本地系统有正确的设置…)
似乎应该在Date()
和格式化的MSDN文档中工作。
这个怎么样?
var millisecsSince1970 = Date.parse('2011-11-12T13:00:00-07:00');
var date = new Date(millisecsSince1970);
相关文章:
- 比较从函数和生成的日期对象
- 如何获得一个只有时间的moment.js日期对象
- 使用moment.js获取时间分区的偏移日期对象
- 获取本地时间的JS日期,日期对象中没有时区详细信息
- 将某个时间格式转换为日期对象
- 正在使用日期字符串初始化javascript日期对象
- 在CouchDB Map函数中发出日期时-对日期对象调用的内容
- 如何将事件的日期放入fullcalendar中的日期对象中
- 为什么在JavaScript中可以从另一个日期对象中减去日期对象
- 理解日期对象接收参数时的getDay()方法
- JS日期对象setUTCMonth()将月份增加2
- 时间-日期对象JavaScript getUTCMilliseconds
- 将带有 AM/PM 的日期字符串转换为 javascript 日期对象
- Javascript 测试中的假日期对象
- 转换/格式化日期对象
- 如何在发布JavaScript日期对象时保留时区偏移量
- JS日期对象在某个范围内的百分比
- 无法从日期对象javascript获取日期和月份
- javascript日期对象未返回正确的日期
- Javascript日期对象-JSFiddle中的不同值