我有以下ISO日期:
(UTC) 2013-10-17T05:23:34.387
(PST) 2013-10-17T05:23:34.387-08:00
我想在PST中显示日期。 (-08:00是从UTC到PST的偏移量)
当我使用时:
alert(new Date('2013-10-17T05:23:34.387'))
alert(new Date('2013-10-17T05:23:34.387-08:00'))
我明白了:
Thu Oct 17 2013 06:23:34 GMT +0100 (GMT Summer Time)
Thu Oct 17 2013 14:23:34 GMT +0100 (GMT Summer Time)
ISO日期没有偏移量来自以下C#(针对此问题进行了适当编辑):
item.CreatedDate = DateTime.Now.ToUniversalTime();
/////
var pst = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
date = TimeZoneInfo.ConvertTimeFromUtc(item.CreatedDate, pst),
var json = JsonConvert.SerializeObject(date, Formatting.Indented);
ISO日期 偏移量来自以下C#(针对此问题进行了适当编辑):
item.CreatedDate = DateTime.Now.ToUniversalTime();
/////
var pst = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
var offset = pst.BaseUtcOffset;
date = new DateTimeOffset(TimeZoneInfo.ConvertTimeFromUtc(item.CreatedDate, pst), offset);
var json = JsonConvert.SerializeObject(date, Formatting.Indented);
我的问题是,如何在JSON中维护时区信息并在浏览器中将日期显示为PST?
答案 0 :(得分:3)
来自MSN关于javascript中的Date.parse
:
本地时区用于解释不包含的参数 时区信息。
<强>更新强>: 您可以使用Json.NET序列化settings保留时区:
var json = JsonConvert.SerializeObject(date,
Formatting.Indented,
new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Local
});
<强> UPDATE2 强>:
关于在javascript中显示
是的,它保持偏移量,但是当它将日期转换为字符串时,它使用本地时区。
请尝试以下方法:
alert(new Date('2013-10-17T05:23:34.387-08:00').toGMTString())
alert(new Date('2013-10-17T05:23:34.387-08:00').toUTCString())