为什么我的PHP date_diff无法正常工作?

时间:2020-09-06 09:15:31

标签: php

我有此消息传递系统,我的计划是将所有消息存储在纽约时间下,然后使用一些javascript将它们转换为用户时区(以查找其时区)。因此,我根据用户所在的时区获取当前时间,然后以纽约为当前时间,然后从消息时间中添加或减去该时间以进行转换。但是由于某种原因,我的date_diff无法正常工作。这是我的代码:

$dateofmessage = date_create($message['date_time']);
date_default_timezone_set("{$_GET['userTimezone']}");
$date1 = date_create(date("y-m-d H:i:s"));
date_default_timezone_set('America/New_York');
$date2 = date_create(date("y-m-d H:i:s"));
if ($date1 > $date2) {
    $diff = date_diff($date1, $date2);
    $differenceToAddOrSub = $diff->format("%y years %m months %d days %h hours %i minutes %s seconds");
    $changeddate = date_create(date_add($dateofmessage, date_interval_create_from_date_string("$differenceToAddOrSub")));
} elseif ($date2 > $date1) {
    $diff = date_diff($date2, $date1);
    $differenceToAddOrSub = $diff->format("%y years %m months %d days %h hours %i minutes %s seconds");
    $changeddate = date_create(date_sub($dateofmessage, date_interval_create_from_date_string("$differenceToAddOrSub")));
}

1 个答案:

答案 0 :(得分:0)

首先,确保$date1$date2产生预期的输出。 date函数取决于服务器的时间配置。确保服务器的时区正确。您可以使用SSH中的date进行检查。

date_create接受格式为date('Y-m-d')而不是date('Y-m-d H:i:s')的日期。后一种格式会导致无法预测的结果。

$date1 = date_create(date("Y-m-d"));