Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C从字符串解析日期时间(自定义格式)_C#_Datetime - Fatal编程技术网

C# C从字符串解析日期时间(自定义格式)

C# C从字符串解析日期时间(自定义格式),c#,datetime,C#,Datetime,我将此日期时间作为字符串:2015-08-21T10:51:25.9495986+02:00 如何将此字符串date解析为DateTime对象 我通常这样做: CultureInfo provider = CultureInfo.InvariantCulture; DateTime _date; DateTime.TryParseExact("2015-05-12T12:00:00", "yyyy-MM-ddTHH:mm:ss", provider, DateTimeStyles.No

我将此日期时间作为字符串:2015-08-21T10:51:25.9495986+02:00

如何将此字符串date解析为DateTime对象

我通常这样做:

CultureInfo provider = CultureInfo.InvariantCulture;   

DateTime _date;

DateTime.TryParseExact("2015-05-12T12:00:00", "yyyy-MM-ddTHH:mm:ss", provider, DateTimeStyles.None, out _date))
但是现在日期时间的末尾包含+02:00。从未遇到过这种格式,我相信这与时间区域有关,对吗?

您的答案如下:

但为了帮助: 您应该尝试使用DateTimeOffset而不是DateTime

请参见以下示例:

DateTimeOffset result = DateTimeOffset.Parse("2012-04-20 10:10:00+0200",CultureInfo.InvariantCulture);
您可以简单地对格式使用o说明符

DateTime.TryParseExact("2015-08-21T10:51:25.9495986+02:00", "o", provider, DateTimeStyles.None, out _date);

这将为您提供一个本地时间,以转换为您可以使用的通用时间。ToUniversalTime

如果您发现dup,您应该对其进行评论,当您有更多代表时,您可以投票作为dup关闭。无需在回答中说明。谢谢@juharr,我会看看我是否有足够的代表来做这件事。你需要3000票才能结束。IMHO解析到DateTime在这里不合适。因为它可能在不同的时区机器中产生不同的结果。例如我现在是UTC+3,您的代码在我的机器上生成21.08.2015 11:51:25,但在Ideone中为21.08.2015 08:51:25。这就是为什么在这种情况下解析DateTimeOffset可能是一种更好的方法。@SonerGönül我认为你可能是对的,尽管OP询问如何解析到DateTime。