繁体   English   中英

为什么我的 PHP date_diff 不能正常工作?

[英]Why is my PHP date_diff not working properly?

我有这个消息系统,我的计划是将所有消息存储在纽约时间下,然后使用一些 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")));
}

首先,确保$date1$date2按预期产生输出。 date功能取决于服务器的时间配置。 确保服务器的时区正确。 您可以通过在 SSH 中使用date来检查这一点。

date_create接受格式为date('Ym-d') date('Ymd H:i:s') ,而不是date('Ymd H:i:s') 后一种格式会导致不可预测的结果。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM