我有以下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')
答案 0 :(得分: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/,"")
<强>参考强>