关于C #将字符串“2017-01-01T12:00:33:123456Z + 02”转换为DateTime

Convert string “2017-01-01T12:00:33:123456Z+02” to DateTime

本问题已经有最佳答案,请猛点这里访问。

我试图将从客户那里得到的这个字符串转换为日期时间,并将其存储在我的数据库中。

我试了几次批准,但没有什么效果。我需要UTC时间的偏移量,所以我想我需要对zz做些什么。

这是有效的:

1
2
3
string   test ="2008-06-11T16:11:20.0904778Z";
DateTime publishingTimeStamp = DateTime.ParseExact(test,"o", CultureInfo.InvariantCulture,
             DateTimeStyles.None);

但是客户的字符串有点不同,所以我尝试了这个:

1
2
string   test ="2017-01-01T12:00:33:123456Z+02";
DateTime publishingTimeStamp = DateTime.ParseExact(test,"yyyy-MM-dd'T'HH:mm:ss:ffffffzz", System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None);

不幸的是,它不起作用。如何转换准确的字符串"2016-01-01T10:00:55:123456Z+02"?是否可能,因为它在ffffff前面使用":"

谢谢你


看起来您忘记了将Z作为字符串文字分隔符转义,格式为'Z'

1
2
3
4
5
string test ="2017-01-01T12:00:33:123456Z+02";
DateTime publishingTimeStamp = DateTime.ParseExact(test,
                                   "yyyy-MM-dd'T'HH:mm:ss:ffffff'Z'zz",
                                    CultureInfo.InvariantCulture, DateTimeStyles.None);
Console.WriteLine(publishingTimeStamp); // 01.01.2017 12:00:33

但由于您的字符串具有UTC偏移值,所以我将把它解析为DateTimeOffset

1
2
3
4
5
string test ="2017-01-01T12:00:33:123456Z+02";
DateTimeOffset publishingTimeStamp = DateTimeOffset.ParseExact(test,
                                   "yyyy-MM-dd'T'HH:mm:ss:ffffff'Z'zz",
                                     CultureInfo.InvariantCulture,
                                     DateTimeStyles.None);

现在你有一个DateTimeOffset作为{01.01.2017 12:00:33 +02:00}

enter image description here