从给定的时间戳字符串中查找时区和时间

use*_*502 1 .net c# timezone datetime timestamp

我需要解析时间戳并从如下字符串中获取时间和时区,

时间戳="2013-09-17T14:55:00.355-08:00"

从上面的字符串,我应该能够得到时间2:55 pm和时区作为EST(东部)

任何人都可以让我知道如何进行上述解析.

Jon*_*eet 5

您可以使用DateTimeOffset包含本地时间和UTC偏移量的内容DateTimeOffset.ParseExact.但是,当时可能有多个时区观察到与UTC相同的偏移量,因此您无法获得实际时区.

示例代码:

using System;
using System.Globalization;

class Test
{
    static void Main()        
    {
        string text = "2013-09-17T14:55:00.355-08:00";
        DateTimeOffset dto = DateTimeOffset.ParseExact(text,
            "yyyy-MM-dd'T'HH:mm:ss.fffzzz",
            CultureInfo.InvariantCulture);
        Console.WriteLine(dto);
    }
} 
Run Code Online (Sandbox Code Playgroud)

或者使用我的Noda Time库:

using System;
using NodaTime;
using NodaTime.Text;

class Test
{
    static void Main()        
    {
        string text = "2013-09-17T14:55:00.355-08:00";
        // Use GeneralIsoPattern just to get a default culture/template value
        OffsetDateTime odt = OffsetDateTimePattern.GeneralIsoPattern
            .WithPatternText("yyyy-MM-dd'T'HH:mm:ss.fffo<+HH:mm>")
            .Parse(text)
            .Value;
        Console.WriteLine(odt);
    }
} 
Run Code Online (Sandbox Code Playgroud)