簡體   English   中英

從 UTC 轉換回來

[英]Converting back from UTC

我正在處理一些來自世界各地的 JSON 日期,我將日期收集為 UTC 但是當我解析 JSON 數據時,它忽略了“Z”,它忘記了它的 UTC 日期,並且日期 kine 不是“本地” 'UTC' 很奇怪。 看來您需要傳入 CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal 部件使其能夠識別 Z。所以以防萬一其他人遭受痛苦 - 試試這個。

        DateTime expected = System.DateTime.UtcNow;
        // var isoDate = new Date('yourdatehere').toISOString(); 
        string isoDate = expected.ToString("u").Replace(' ', 'T'); //  eg "2020-05-04T09:24:03Z   vs 2020-05-04T10:24:03 BST

        DateTime actual = DateTime.Parse(isoDate); // should process the Z as its a GMT date zulu - FAIL
        actual = DateTime.ParseExact(isoDate,
            "yyyy-MM-ddTHH:mm:ssZ",
            CultureInfo.InvariantCulture,
            DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);// PASS
        Assert.IsTrue(expected.Hour == actual.Hour, "Essential Parsing of zulu date");
        Assert.IsTrue(actual.Kind == DateTimeKind.Utc ,"surely It must have seen the Z?");

        Assert.AreEqual(expected  ,actual ,"Back where we started");

要觀察的關鍵位是

  actual = DateTime.ParseExact(isoDate,
         "yyyy-MM-ddTHH:mm:ssZ",
        CultureInfo.InvariantCulture,
        DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal );// PASS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM