Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP date()到Excel串行格式的转换_Php - Fatal编程技术网

PHP date()到Excel串行格式的转换

PHP date()到Excel串行格式的转换,php,Php,我已经找了好几个小时了。我到处都能看到如何将Excel序列号转换为UNIX_日期的示例 我想做的是用PHP日期(“Y-m-DH: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中获取此“4357

我已经找了好几个小时了。我到处都能看到如何将Excel序列号转换为UNIX_日期的示例

我想做的是用PHP日期(“Y-m-DH: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”

编辑: 根据Morgan的回答bellow,我现在有一个函数可以这样做: 编辑2: 添加了时区设置以获取我的本地时间,如果其他人需要,请为您的本地时区设置。支持的PHP时区列表可以在这里找到

上述功能将返回当前本地日期和时间的正确序列号。

此处:

<?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);

您将看到excel是如何计算序列日期的。非常接近,我也尝试过类似的方法,但没有floatval()。但是在你的例子中,如果我在excel中输入这个值,excel显示大约一个小时的差异。有没有办法纠正这种行为?或者解释它为什么会发生?Xmm,我不确定,让我检查一下它到底是一个小时吗?如果是,手动添加一个小时怎么样?我想了一下,但我不确定相同的代码是否能在夏季/冬季为我提供正确的时间。这可能与此有关。但我想我现在不能查
<?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);
float(43573.46537037)