为什么此双精度值无法转换

时间:2019-04-12 10:55:23

标签: c# date

在上面的代码中,我从SpreadsheetDocument获取日期数据。示例日期无法转换。 但是其他日期可以转换。

为什么我不能转换此日期,以及如何以其他方式转换日期?

DateTime.FromOADate(double.Parse("05.09.1977"));

我想以此将此字符串转换为DateTime。

3 个答案:

答案 0 :(得分:4)

"05.09.1977不是有效的double。看来这是实际日期(MONTH.DAY.YEAR或DAY.MONTH.YEAR)。

使用以下任一方法将其解析为DateTime

DateTime.ParseExact("05.09.1977", "dd.MM.yyyy", CultureInfo.InvariantCulture)

DateTime.ParseExact("05.09.1977", "MM.dd.yyyy", CultureInfo.InvariantCulture)

答案 1 :(得分:3)

这种方式:

Console.WriteLine(DateTime.ParseExact("05.09.1977", "dd.MM.yyyy", CultureInfo.InvariantCulture));

输出:

  

05/09/1977 00:00:00

答案 2 :(得分:1)

根据 DateTime.FromOADate(Double) method doc

返回等于指定的OLE自动化日期的DateTime。

  

公共静态DateTime FromOADate(双精度d);

     

参数

     

d       双重

     

一个OLE自动化日期值。

因此,您必须传递一个double作为参数

but double.Parse(“ 05.09.1977”)???

那怎么可能是双重的?

那是原因