2012-02-05 73 views
5

我知道这个问题已被问及许多不同的方法,并且我已经查看过所有这些解决方案,并且这些解决方案似乎都不适用于我。所以,我希望你们可以快速地给我一个机会。将字符串格式“yyyy-MM-ddTHH:mm:ss.fffZ”转换为DateTime

输入字符串为:“2000-01-01T12:00:000Z”。我需要将该输入字符串并将其转换为DateTime,以便它可以存储在数据库中。

我一直在使用ParseExact,但我一直得到不认可的日期字符串异常。我哪里错了?

inValue.LatestDepartTime = "2000-01-01T12:00:000Z"; 
DateTime _latestDepartTime = DateTime.ParseExact(inValue.LatestDepartTime, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); 

回答

5

您的格式字符串需要确切的 ly与输入匹配。

这包括文字TZ字符。

+0

所以,我应该能够解析出的T和Z应该给我的原始字符串:2020-01-01 12:00:000。然后这两个字符串将完全匹配。但是,我已经尝试过,仍然得到相同的错误。有一点需要注意,也许这对调试有帮助,我注意到_latestDepartTime被设置为1/1/0001 12:12:000 AM每次我尝试这个。 – CalvinBlount 2012-02-05 20:44:29

+0

不;你需要在格式字符串中包含'T'和'Z'。您可能需要用单引号包装它们;我不记得了。 – SLaks 2012-02-05 20:51:25

+0

您刚刚看到'DateTime'的默认(空)值。 – SLaks 2012-02-05 20:51:47

3

您没有在模式中指定T

也就是说,您可能需要查看XmlConvert类,该类提供了转换此格式的方法。

4

您需要在格式字符串中包含\\T\\Z以匹配文字TZ

1

你需要把周围的T单引号和Z:

DateTime parsedDateTime; 
DateTime.TryParseExact(obj, "yyyy-MM-dd'T'HH:mm:ss'Z'", null, System.Globalization.DateTimeStyles.None, out parsedDateTime); 
return parsedDateTime; 
2

使用yyyy-MM-dd'T'HH:mm:ss.fff'Z'

的代码是:

public DateTime convertIsoToDateTime (string iso) 
{ 
    return DateTime.ParseExact(iso, "yyyy-MM-dd'T'HH:mm:ss.fff'Z'", CultureInfo.InvariantCulture); 
}