0

我有以下 ISO 8601 日期字符串:

var isoDate = 2013-10-01T09:00:00.000-04:00;

尝试使用该Date()函数格式化日期时,日期的时区更改为我的本地时区(注意它是如何08:00而不是09:00

Date.fromISOString(isoDate);  /* Returns: Tue Oct 01 2013 08:00:00 GMT-0500 (Central Standard Time)*/

我想保持当前字符串的原始时区完全完好。

如果字符串有09:00,我要输出9PM

最传统的做法是什么?

注意:我也尝试过使用datejs,但没有成功。尝试以下返回空白结果:

Date.parse('2013-10-01T09:00:00.000-04:00')
4

1 回答 1

0

使用new运算符、Date构造函数、toISOString方法和多个字符串替换来保留原始字符串:

var foo = "2013-10-01T09:00:00.000-04:00";
var bar = foo.substr(-6);
var baz = foo.substr(11,2)
var isoDate = new Date(foo).toISOString().replace("Z",bar).replace(/T../,"T"+baz);
var hours = String(baz).concat(Number(baz) < 12 ? "PM" : "AM").replace(/^0/,"")

参考

于 2014-02-13T01:38:52.640 回答