您必须知道.NET方法“DateTime.FromOADate(double d)”。 我需要在javascript中实现相同的功能。即给出像“40967.6424503935”这样的双倍值,它必须转换为“2/28/2012 3:25:07 PM” 有人可以帮帮我吗?
提前致谢!
答案 0 :(得分:11)
自动化日期是自1900年1月1日以来的天数(1900年被奇怪地视为闰年)。所以转换是:
var oaDate = 40967.6424503935;
var date = new Date();
date.setTime((oaDate - 25569) * 24 * 3600 * 1000);
alert(date);
此解决方案创建UTC日期。当您显示它时,它将显示在您当地的时区。根据您的日期是本地日期还是UTC日期,这是正确的,或者需要一些额外的时区摆弄。
答案 1 :(得分:0)
@donovan分享,它实际上是从1899年12月30日开始 .net function documentation
OLE自动化日期被实现为浮点数,其整数部分是1899年12月30日午夜之前或之后的天数,其小数部分代表该天的时间除以24。例如,午夜,1899年12月31日以1.0表示; 1900年1月1日上午6点以2.25表示; 1899年12月29日午夜以-1.0表示;和1899年12月29日上午6点以-1.25表示。