如何将DateTime值转换为double?

时间:2009-06-18 03:50:31

标签: c# datetime

如何将DateTime值转换为double

4 个答案:

答案 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);