设置strtotime功能的时区

时间:2016-05-28 19:28:54

标签: php

我将每日倒计时设置为截止日期。代码工作正常。

唯一的问题是,根据PHP Manual,该函数将使用默认时区:

  

除非在该参数中指定了时区,否则此函数的每个参数都使用默认时区。

我需要能够指定时区。

我在手册中阅读的部分并不完全清楚如何执行此操作。

这是我的代码:

<?php
 $date = strtotime("September 30, 2016 11:59 PM");
 $remaining = $date - time(); // number of seconds remaining
 $days_remaining = floor($remaining / 86400);
 $hours_remaining = floor(($remaining % 86400) / 3600); // display final 5 days only
 echo "$days_remaining Days Remaining";
 ?>

有没有一种简单的方法可以将美国太平洋时区整合到上面的代码中?

我的猜测是将其作为第一行代码:

date_default_timezone_set('America/Los_Angeles');

但我不确定这会有效,我也不想更改其他脚本的时区。

我愿意采用其他方法来实现这一目标。

2 个答案:

答案 0 :(得分:2)

您可以使用date_default_timezone_get()

捕获现有的默认时区

因此请保存当前时区,设置新时区,然后进行计算,然后像这样替换原始时区

$save_zone = date_default_timezone_get();

date_default_timezone_set('America/Los_Angeles');

$date = strtotime("September 30, 2016 11:59 PM");
$remaining = $date - time(); // number of seconds remaining
$days_remaining = floor($remaining / 86400);
$hours_remaining = floor(($remaining % 86400) / 3600); // display final 5 days only
echo "$days_remaining Days Remaining";

date_default_timezone_set($save_zone);
  

有效timezone settings

列表

答案 1 :(得分:1)

为什么不将时区附加到字符串?

$inputDate = "September 30, 2016 11:59 PM";
$date = strtotime($inputDate . ' +0100');