ToOADate(); 转换儒略日期 Excel

cco*_*ker 1 c# excel datetime ms-office openxml

我正在使用 OpenXML 读取和 Excel 电子表格,并将日期存储为数字。据我了解,这是一种朱利安格式,我在谷歌上搜索的每个地方都说要使用 ToOADate(); 将这些数字转换为日期。

我遇到的问题是 ToOADate(); 在我的编译中没有解决。我正在使用 Visual Basic 2013,C# Asp.net MVC 应用程序。

看来这是在系统命名空间中,但我已经有一个 using System 语句。

我显然错过了一些非常基本的东西 - 有人可以帮忙吗?

 var test = 41725;
DateTime test2 = test.ToOADate();
Run Code Online (Sandbox Code Playgroud)

我得到的编译错误是

错误 4“int”不包含“ToOADate”的定义,并且找不到接受“int”类型的第一个参数的扩展方法“ToOADate”(您是否缺少 using 指令或程序集引用?)

Gay*_*Fow 5

如果您要将数字转换为 Framework DateTime 实例,则可能需要使用DateTime 结构上的静态方法。

        DateTime dt = DateTime.FromOADate(23456);
Run Code Online (Sandbox Code Playgroud)

此方法的范围需要限定为 DateTime。在我的示例中,结果是 1963 年 3 月 20 日。

DateTime 上还有一个实例方法,它的作用相反......

        double d = dt.ToOADate();
Run Code Online (Sandbox Code Playgroud)

本例中的结果是 23456。

您的代码表明您试图将其作为int 的实例方法调用,但这将不起作用。编译器告诉您 int 原语上没有这样的方法。

尝试一下...

 var test = 41725;
DateTime test2 = DateTime.FromOADate(test);
Run Code Online (Sandbox Code Playgroud)

您将得到 2014 年 3 月 27 日。