我正在寻找正确的PHP函数来解析此时间戳。
我有一些需要在PHP中解析的时间戳,但是我找不到要使用的正确函数。时间戳的格式为“ 42866.32972”。
Excel使用格式“ YYYY-MM-DD hh:mm:ss”将“ 42866.32972”转换为“ 2017-05-11 07:54:48”,但是我找不到用于解析此时间戳格式的函数PHP。
我试图用DateTime和Date对此进行解析,但无济于事。
时间戳格式是什么,我该如何解析?
答案 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);
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转换,必须减去天数,然后转换为秒。