从Oracle转换为datetime

我知道有很多类似的问题,但我找不到我想要的东西。

这是我的oracle日期:

string testdate= "2014-01-07 15:00:00.0000000"; 

以下是我尝试转换为datetime的方法:

 DateTime.ParseExact(testdate, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture) 

这会引发格式exception。 有任何想法吗?

我的快速测试也会抛出字符串无效的日期时间exception。 快速测试:

 Console.WriteLine(DateTime.ParseExact(testdate, "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture).ToShortDateString()); 

首先尝试避免首先将其作为字符串。 确保在Oracle中使用适当的数据类型,并且应该能够在相应的DataReader (或者您正在使用的任何内容)上调用GetDateTime

如果你必须将其解析为文本,那么你需要指定一个与值匹配的格式 – 所以使用7 f s而不是3,假设你的值在末尾有“.0000000”。

 DateTime.ParseExact(testdate, "yyyy-MM-dd HH:mm:ss.fffffff", CultureInfo.InvariantCulture) 

但同样,我强烈建议你避免将价值作为文本来处理。

为什么要使用ParseExact ? Reqular Parse似乎有效。

 var dt = DateTime.Parse("2014-01-07 15:00:00.0000000", CultureInfo.InvariantCulture); // Prints out 2014-01-07T15:00:00.0000000 Console.WriteLine(dt.ToString("o"));