我有以下 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?

最佳答案

来自 MSN 关于 javascript 中的 Date.parse:



更新 :
您可以使用 Json.NET 序列化 settings 保持时区:

var json = JsonConvert.SerializeObject(date,
    Formatting.Indented,
    new JsonSerializerSettings
    {
        DateTimeZoneHandling = DateTimeZoneHandling.Local
    });

更新 2 :
关于在 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())

关于c# - 时区看似错误的 JSON ISO 日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19427258/

10-12 12:18
查看更多