PHP date() 到 Excel 串行格式转换
Posted
技术标签:
【中文标题】PHP date() 到 Excel 串行格式转换【英文标题】:PHP date() to Excel serial format conversion 【发布时间】:2019-04-18 10:59:13 【问题描述】:我已经找了好几个小时了。我到处都能看到如何将 Excel 序列号转换为 UNIX_Date 的示例。
我想要做的是一个 php 日期("Y-m-d H:i:s") 将其转换为 Excel 序列号。
例子:
$php_date = date("Y-m-d H:i:s"); // "2019-04-18 11:57:25" at the time
如果我在 Excel 单元格中输入“2019-04-18 11:57:25”,并将其格式化为显示数字,则 Excel 会显示“43573.4982060185” 如何在 PHP 中得到这个“43573.4982060185”?
编辑: 根据摩根在下面的回答,我现在有一个功能可以做到这一点: 编辑2: 添加了时区设置以获取我的本地时间,如果其他人需要此设置,请设置为您的本地时区。 PHP 支持的时区列表可以在这里找到https://www.php.net/manual/en/timezones.php
function PHP_to_Excel()
date_default_timezone_set("Europe/London");
$datetime = date("Y-m-d H:i:s");
$strdate = strtotime($datetime);
$excel_date = floatval(25569 + ($strdate / 86400));
return $excel_date;
上述函数将返回当前本地日期和时间的正确序列号。
【问题讨论】:
Here 你会看到excel是如何计算序列日期的 【参考方案1】:这里:
<?php
date_default_timezone_set('America/New_York');
$date_time = date("Y-m-d H:i:s");
$str_date = strtotime($date_time . ' +1 day');
$excel_date = floatval(25569 + $str_date / 86400);
var_dump($excel_date);
你应该用你的当前更改时区,你可以看到所有时区here
返回:
float(43573.46537037)
【讨论】:
你非常接近,我也尝试过类似的方法,但没有 floatval()。但在你现在的情况下,如果我在 excel 中输入该值,excel 会显示大约一小时的差异。有没有办法解决这种行为?或解释为什么会这样? Xmm,我不确定,让我检查一下 正好是一小时吗?如果是,手动加一小时怎么样? 嗯,我想到了这一点,但我不确定相同的代码是否会在夏季/冬季给我正确的时间。这可能与此有关。但我想我现在不能检查以上是关于PHP date() 到 Excel 串行格式转换的主要内容,如果未能解决你的问题,请参考以下文章