这可能很简单,但我有点困惑如何做到这一点。我如何使用 JavaScript 仅解析以下内容中的时间ISO 8601 http://en.wikipedia.org/wiki/ISO_8601日期字符串:
2009-12-06T17:10:00
换句话说,对于上面的字符串,我想输出:
5:10 PM
任何关于这方面的指导/教程都会很棒。
Chrome 和 Firefox:标准 JavaScript 日期构造函数采用 ISO 8601 日期字符串。例如:
var sampleDate = new Date("2010-03-07T02:13:46Z");
返回此日期对象:“Sun Mar 07 2010 13:13:46 GMT+1100(澳大利亚东部夏令时间)”
这在 IE 中不起作用(包括最新的 IE 9)
以下是 Paul Sowden 的跨浏览器解决方案:http://delete.me.uk/2005/03/iso8601.html http://delete.me.uk/2005/03/iso8601.html :
Date.prototype.setISO8601 = function (string) {
var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
"(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
"(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
var d = string.match(new RegExp(regexp));
var offset = 0;
var date = new Date(d[1], 0, 1);
if (d[3]) { date.setMonth(d[3] - 1); }
if (d[5]) { date.setDate(d[5]); }
if (d[7]) { date.setHours(d[7]); }
if (d[8]) { date.setMinutes(d[8]); }
if (d[10]) { date.setSeconds(d[10]); }
if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
if (d[14]) {
offset = (Number(d[16]) * 60) + Number(d[17]);
offset *= ((d[15] == '-') ? 1 : -1);
}
offset -= date.getTimezoneOffset();
time = (Number(date) + (offset * 60 * 1000));
this.setTime(Number(time));
}
Usage:
var date = new Date();
date.setISO8601("2005-03-26T19:51:34Z");
如果您在 JavaScript 中进行大量日期时间操作,我还建议您检查一些 JS 库,例如MomentJS http://momentjs.com/。它处理一些常见的事情,例如日期解析、格式化和计算两个日期之间的差异,并支持多种本地化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)