如何将DateTime
值转换为double
?
答案 0 :(得分:9)
如果double
表示OLE自动化日期,则可以使用DateTime.ToOADate()
。来自链接的MSDN主题:
OLE自动化日期实现为浮点数,其值为1899年12月30日午夜的天数。例如,1899年12月31日午夜由1.0表示; 1900年1月1日上午6点,由2.25表示; 1899年12月29日午夜以-1.0表示;和1899年12月29日上午6点用-1.25表示。
基本OLE自动化日期是1899年12月30日午夜。最大OLE自动化日期与MaxValue相同,即9999年12月31日的最后一刻。
如果您正在谈论其他一些日期表示也可以存储在double
中,请注明......
答案 1 :(得分:4)
DateTime.ToOADate()在C#
中转换为双OLE Automation Date答案 2 :(得分:0)
是,OLE自动化日期启用Datetime
转换为十进制/双精度类型。但是,十进制/双精度的结果/值不是精确的系统Datetime
。
例如,
Decimal dateIndDec = Convert.Decimal (Datetim.Today.ToOADate());
不等于MS SQL
Select Convert (Decimal (10, 9), GetDate())
结论:OLE自动化日期不是真正的系统datetime
信息...无法使用它。
我一直在搜索C#中的转换Datetime
值到十进制值,但没有运气。
答案 3 :(得分:0)
您可以计算DateTime和DateTime.MinValue之间的差异,然后获取任何Total*
值。
var difference = DateTime.Now - DateTime.MinValue;
Console.WriteLine(difference.TotalMinutes);
Console.WriteLine(difference.TotalMilliseconds);