c#将字符串转换为日期 - 这是什么样的格式?

时间:2014-11-03 08:54:53

标签: c# .net datetime

我有以下DateTime字符串2014-11-03 08:44:00:082467 Z

当我尝试做简单的Convert.ToDateTime时,我得到了错误,认为它不是公认的DateTime字符串。

我也尝试了帖子中的建议:DateTime.Parse("2012-09-30T23:00:00.0000000Z") always converts to DateTimeKind.Local

var date = DateTime.ParseExact("2012-09-30T23:00:00.0000000Z",
                                   "yyyy-MM-dd'T'HH:mm:ss.fffffff'Z'",
                                   CultureInfo.InvariantCulture,
                                   DateTimeStyles.AssumeUniversal |
                                   DateTimeStyles.AdjustToUniversal);

但得到了同样的错误。这是什么类型的DateTime字符串?以及如何将其转换为DateTime对象?而且,这不是当前的时间(我是2小时前) - 所以我猜这是一种普遍的时间。

由于

3 个答案:

答案 0 :(得分:1)

看起来像ISO 8601格式。

DateTime.Now.ToString("o")

答案 1 :(得分:1)

这是适用于string的格式,但根据ISO 8601标准 不是有效字符串:

var date = DateTime.ParseExact("2014-11-03 08:44:00:082467 Z",
                               "yyyy-MM-dd' 'HH:mm:ss:ffffff' Z'",
                               CultureInfo.InvariantCulture,
                               DateTimeStyles.AssumeUniversal |
                               DateTimeStyles.AdjustToUniversal);

Dotnetfiddle

答案 2 :(得分:0)

您在问题中提供的两个日期完全不同!

假设您的问题适用于第二个,看起来像标准,答案是:

string s = "2012-09-30T23:00:00.0000000Z";
var date = DateTime.ParseExact(s, "o", CultureInfo.InvariantCulture,
                                   DateTimeStyles.AssumeUniversal |
                                   DateTimeStyles.AdjustToUniversal);
Console.WriteLine(date);

(完整的工作样本)