计算具有不同时区的php ATOM日期字符串之间的时差

时间:2017-05-13 00:20:35

标签: php date timezone datediff

我试图通过循环运行一堆日期。

对于我拥有的每个循环项目:

  • ATOM时间(始终为UTC + 2)
  • ATOM时间(因UTC +/- x而异)

例如:

  1. 发布日期 = 2017-05-13T01:51:51 + 02:00 - 未来日期 = 2017-05-13T01:00:00-03:00
  2. 发布日期 = 2017-04-22T19:26:31 + 02:00 - 未来日期 = 2017-04-29T05:00:00 + 01:00
  3. 我想知道的是:

    • 在foreach循环中,我如何获得每个亲戚未来日期的时差'反对发布日期'
    • 我不确定是否需要将每个字符串转换为UTC或使用偏移量

    我已经使用date_default_timezone_set()设置了各自的日期('发布日期'以及'未来日期'

    提前非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您使用ATOM设置DateTime类,则将全部为您完成。您需要做的只是diff。例如

$postdate = '2017-05-13T01:50:50+02:00';
$futuredate = '2017-05-13T01:51:51-03:00';

$pd = new DateTime($postdate);
$fd = new DateTime($futuredate);

echo $pd->format(DateTime::ATOM) . PHP_EOL;
echo $fd->format(DateTime::ATOM) . PHP_EOL;

$diff = $pd->diff($fd);

echo $diff->format('%y years %m months %d days %h hours %i minute %s seconds');

生成结果

2017-05-13T01:50:50+02:00
2017-05-13T01:51:51-03:00
0 years 0 months 0 days 5 hours 1 minute 1 seconds