2014-11-03 108 views
-1

我有以下的时间字符串2014-11-03 08:44:00:082467 Zc#将字符串转换为日期 - 这是什么格式?

当我尝试做ç简单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小时之前) - 所以我猜这是世界各地的某种时间。

谢谢

+1

你尝试调整日期格式字符串来匹配数据? – 2014-11-03 08:57:49

+1

在亚秒值之前有一个':'而不是''。' – 2014-11-03 08:58:09

+0

@PatrickHofman我发布的代码来自另一篇文章,我发现它 - 它不适用于我的字符串。 – developer82 2014-11-03 09:02:42

回答

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

1

它看起来像ISO 8601格式。

DateTime.Now.ToString("o")

+0

那么如何从字符串进行转换? – developer82 2014-11-03 08:59:32

+0

'DateTime time = DateTime.ParseExact(date,“o”,CultureInfo.InvariantCulture,DateTimeStyles.AssumeUniversal);'将解析时间。任何需要应用的补偿我都会留给你。 – 2014-11-03 09:06:47

0

两个日期你在你的问题提供的是不一样的!

假设你的问题也适用于第二,这貌似是标准答案是:

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

(全工样品)