4

您必须了解 .NET 方法“DateTime.FromOADate(double d)”。我需要在 javascript 中实现相同的功能。即给定一个像“40967.6424503935”这样的双重值,它必须转换为“2/28/2012 3:25:07 PM”有人可以帮我吗?

提前致谢!

4

2 回答 2

13

自动化日期是自 1900 年 1 月 1 日以来的天数(奇怪地将 1900 年视为闰年)。所以一个转换是:

var oaDate = 40967.6424503935;
var date = new Date();
date.setTime((oaDate - 25569) * 24 * 3600 * 1000);
alert(date);

此解决方案创建一个 UTC 日期。当您显示它时,它将以您当地的时区显示。根据您的日期是本地日期还是 UTC 日期,这是正确的,或者需要一些额外的时区摆弄。

于 2012-05-04T06:40:46.220 回答
0

正如@donovan 所分享的,它实际上来自 12/30/1899 .net 函数文档

OLE 自动化日期以浮点数形式实现,其整数部分是 1899 年 12 月 30 日午夜之前或之后的天数,其小数部分表示当天的时间除以 24。例如,12 月 31 日午夜1899用1.0表示;1900 年 1 月 1 日上午 6 点由 2.25 表示;1899 年 12 月 29 日午夜,用 -1.0 表示;1899 年 12 月 29 日上午 6 点用 -1.25 表示。

于 2020-09-10T19:20:31.570 回答