c#解析UTC日期时间

lee*_*lee 18 c# datetime parsing

我试图解析11/23/2011 23:59:59 UTC +0800作为ac#datetime对象但是尝试标准的datetime解析方法甚至是datetime完全解析我得到无效的日期.

有任何想法吗?

Jon*_*eet 31

我建议您在格式字符串中使用时区偏移说明符时,按照MSDN中的建议解析为a DateTimeOffset而不是a :DateTime

using System;
using System.Globalization;

class Test
{    
    static void Main(string[] args)
    {
        string text = "11/23/2011 23:59:59 UTC +0800";
        string pattern = "MM/dd/yyyy HH:mm:ss 'UTC' zzz";

        DateTimeOffset dto = DateTimeOffset.ParseExact
            (text, pattern, CultureInfo.InvariantCulture);
        Console.WriteLine(dto);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,DateTime如果需要,您可以将其转换为UTC中的值,但不存在" DateTime具有8小时偏移的a" - a DateTime被视为通用,本地或未指定,无处存储特定偏移.

DateTime以各种方式是一种奇怪的类型,并且可能给不知情的开发者带来问题.