2016-03-28 66 views
0

我有以下ISO8601格式的日期时间字符串:ISO8601格式化字符串日期时间

2016-03-28T16:07:00 + 0200

我想将它转换成C#DateTime对象,但我正在使用的解析方法会引发异常。

目前,我有这样的:(不工作)

string format = "yyyy-MM-ddTHH:mm:ss+zzzz"; 
CultureInfo provider = CultureInfo.InvariantCulture; 

// Throws the exception: "String was not recognized as a valid DateTime." 
DateTime time = DateTime.ParseExact("2016-03-28T16:07:00+0200", format, provider); 

我如何解析函数与我的字符串工作吗?

+2

你到底在问什么?你想做什么,你有麻烦? – senschen

+0

我想在我的c#程序中使用日期。我目前的做法是行不通的。 – Evert

+0

你想用它做什么?如果我们不能理解这个问题,我们就无能为力。 :/ – senschen

回答

0

我建议使用DateTimeOffset而不是DateTime。

var dateString = "2016-03-28T16:07:00+0200"; 
var date = DateTimeOffset.Parse (dateString); 

Console.WriteLine (date.ToString()); 

如果你要转换为DateTime对象

date.UtcDateTime; 

它会发出:

3/28/2016 4:07:00 PM +02:00 
+0

感谢您的回应,但我想将其转换为DateTime对象,所以我可以在我的程序中进一步使用该对象进行比较。 – Evert

+0

你可以很容易地转换为任何你想要的对象。 PointTimeTimeOffset最适合不同的时区。 – Saleem

+0

@Evert查看DateTimeOffset的'.UtcDateTime'属性 – Saleem