如何在PHP中获取英国时区并检测午夜


How to get the UK timezone in PHP and detect midnight?

我正在学习一些PHP。我有一个脚本来检查 JSON 文件是否存在。如果不存在;它将用一些 YQL 和一些数据填充它。如果它存在,它不会做任何事情,因为它对缓存和速度更好。

在我的代码中;我有这条线(目前每 3 小时只做一次 (10800)):

if ( !file_exists($cache) || filemtime($cache) < ( time() - 10800 ) ) {

我想

做的是,尽管服务器时间,我想使用英国格林威治标准时间时区并检查它是否已经过午夜 00.01,如果是,那就是我想更新脚本的时候。英国每天午夜 00.01。现在我听说 PHP 支持时区,但我只想要它在这个脚本上?

这就是我尝试过的。

// TIMEZONE
date_default_timezone_set("Europe/London");
$date = $date();
$timestr = $time();
$timestamp = strtotime('today midnight');
// VARS
$cache = '../media/js/data.json';
// VALIDATION
// -- The cache is new
if ( !file_exists($cache) || filemtime($cache) < ( time() - timestamp ) ) {

另一种方法是如前所述是 cron 作业。 您提到您想要英国时区,在这种情况下,请将您的 PHP.ini 时区设置为英国。 这就是你的做法在 PHP .ini 文件中添加此行或替换

;定义日期函数使用的默认时区date.timezone = "Europe/London"

,然后设置 cron 作业。

我正在使用一些类似的东西

$timezone = "Your timezone";
$tmpTZ = date_default_timezone_get();
date_default_timezone_set($timezone);
// some code to generate the date
date_default_timezone_set($tmpTZ);

把它放在一个小函数中,你就可以开始了。

最简单的解决方案是使用 Cron,只需计算 2 个时区之间的差异,并在计算的时间添加任务

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/