传递大于有限金额的日期时间双倍

时间:2012-01-11 00:49:22

标签: c#

DateTime dt=DateTime.FromOADate(duble); //e.g 3364072679.0

不幸的是,我的双倍大于OleAut Date的允许范围。那我该怎么办?

2 个答案:

答案 0 :(得分:2)

如果小数(时间)部分不重要,您可以将余数添加到最大OLE日期:

double maxOLEDate = 2958466.0
int days = duble - maxOLEDate; 
DateTime dt=DateTime.FromOADate(maxOLEDate).AddDays(days); 

或者只是将值添加到" Min" OLE日期:

DateTime dt = DateTime.FromOADate(0).AddDays((int)duble);

修改

我更正了 - DateTime结构不支持过去2,958,466.0(12/31/9999)的OLE日期值。除非H. G. Wells是您的用户,否则这不是有效输入。

答案 1 :(得分:1)

根据online help for ToAuthDate,最大OLE日期与DateTime.MaxValue相同(即9999年末)。

您真的需要处理10,000年及以后的日期吗?