如何将Excel序列号转换为.NET日期时间?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

如何将Excel串行日期转换为.NET日期时间?

例如,39938是05/05/2009。

提问于
用户回答回答于

自1/1/1900以来的天数是39938?

在这种情况下,使用此函数(C#):

public static DateTime FromExcelSerialDate(int SerialDate)
{
    if (SerialDate > 59) SerialDate -= 1; //Excel/Lotus 2/29/1900 bug   
    return new DateTime(1899, 12, 31).AddDays(SerialDate);
}

VB:

Public Shared Function FromExcelSerialDate(ByVal SerialDate As Integer) As DateTime
    If SerialDate > 59 Then SerialDate -= 1 ''// Excel/Lotus 2/29/1900 bug
    Return New DateTime(1899, 12, 31).AddDays(SerialDate)
End Function
用户回答回答于

我觉得用它更简单FromOADate法,例如:

DateTime dt = DateTime.FromOADate(39938);

使用此代码DT is "05/05/2009".

扫码关注云+社区