什么PHP函数可以解析此时间戳42866.32972

时间:2018-08-15 01:10:07

标签: php excel datetime

我正在寻找正确的PHP函数来解析此时间戳。

我有一些需要在PHP中解析的时间戳,但是我找不到要使用的正确函数。时间戳的格式为“ 42866.32972”。

Excel使用格式“ YYYY-MM-DD hh:mm:ss”将“ 42866.32972”转换为“ 2017-05-11 07:54:48”,但是我找不到用于解析此时间戳格式的函数PHP。

我试图用DateTime和Date对此进行解析,但无济于事。

时间戳格式是什么,我该如何解析?

2 个答案:

答案 0 :(得分:6)

Excel日期与Unix Epoch相似,但是与(1970/01/01)相比,日期从不同的日期(1900/01/01)开始。

<?php

function parse_excel_date($value) {
    return date('Y-m-d H:i:s', ceil($value * 86400 - 2209161600));
}

echo parse_excel_date(42866.32972);

Output

2017-05-11 07:54:48

答案 1 :(得分:0)

您可以使用此公式将Excel日期更改为Unix日期,然后可以使用“ gmdate”获取PHP中的实际日期:

INSERT INTO Billing ( BillDate, BillAmount, NumActive )
SELECT #8/14/2018# AS Expr1, 100 AS Expr2, DCount('*', 'Members', '[Active]=Yes') AS Expr3
FROM Dual;

并从Unix日期转换为Excel日期,请使用以下公式:

$unix_date = ($excel_date- 25569) * 86400

将此公式放入变量后,您可以使用以下示例获取PHP中的实际日期:

$excel_date= 25569 + ($unix_date / 86400)

86400是一天中的秒数= 24 * 60 * 60。

25569是从1900年1月1日到1970年1月1日的天数。

Excel基本日期为1900年1月1日,Unix为1970年1月1日。

UNIX日期值以1970年1月1日(1969年12月31日午夜)为单位。

因此要从excel转换,必须减去天数,然后转换为秒。