如何将excel序列日期转换为.净日期时间?

例如,39938是2009年5月5日.

推荐答案

其中39938是自1900年1月1日以来的天数?

In that case, use the framework library function 100 .
此函数encapsulates包含所有细节,并进行边界判断.

鉴于其历史价值,以下是一种可能的实现:

(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

[Update]:

好的:现在问题解决了.有关详细信息,请参阅 comments .

.net相关问答推荐

从容器化客户端应用程序连接到 OPC-UA 服务器

Npgsql Minimum Pool Size 似乎没有被考虑在内

在 Git for Visual Studio 2012 中恢复到以前的提交

如何判断属性设置器是否公开

判断 Windows 路径中是否存在可执行文件

使用字典作为数据源绑定组合框

.Include() 与 .Load() 在 EntityFramework 中的性能

返回 IQueryable 或不返回 IQueryable

LINQ 性能常见问题解答

如何创建只读依赖属性?

Dapper 是否支持 SQL 2008 表值参数?

ILookup 接口与 IDictionary

dotnet 恢复警告 NU1701

如何仅在需要时提升权限?

IEnumerable vs IReadonlyCollection vs ReadonlyCollection 用于公开列表成员

无锁多线程适用于真正的线程专家

ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?

是 C# 中的 bool 读/写原子

表单不响应 KeyDown 事件

在构建事件命令行中放置注释的正确方法?