[英]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.