Unix 时间戳以秒为单位,一小时有 3600 秒(60 分钟,每个 60 秒 = 60*60 = 3600),所以只需减去:
$timestamp = time();
$timestamp_less_one_hour = $timestamp - 3600;
您也可以使用strtotime 来完成相同的操作:
$timestamp_less_one_hour = strtotime('-1 hour', $timestamp);
或者如果$timestamp 只是“现在”,您可以在没有第二个参数的情况下调用strtotime:
$timestamp_less_one_hour = strtotime('-1 hour'); // time() - 1 hour
所以您似乎正在寻找 GMT 时间,问题是 GMT 可以包括夏令时 (DST),而 PHP 中的“GMT”日期函数实际上返回 UTC 时间,它没有 DST 的概念。好在用PHP可以检测到是否是夏令时,基本可以适当调整。
使用gmdate获取UTC时间:
$utc_time = gmdate('U'); // return Unix seconds in UTC timezone
使用I检测是否是夏令时:
$is_dst = gmdate('I'); // 1 when it's DST, 0 otherwise
gmdate('U') 将在 DST 期间落后 GMT 时间一个小时,因此您需要给它+3600 秒,或者在 DST 时给它 1 小时,所以把这些放在一起:
$gmt_time = gmdate('U') + (3600*gmdate('I'));