метки времени 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 может включать летнее время (DST), а функции даты «GMT» в PHP фактически возвращают время UTC, которое не имеет понятия о летнем времени.,К счастью, вы можете определить, является ли это летним временем, используя PHP, и в основном соответствующим образом скорректировать.
Получить время UTC, используя gmdate
:
$utc_time = gmdate('U'); // return Unix seconds in UTC timezone
Определить, является ли это летним временем, используя I
:
$is_dst = gmdate('I'); // 1 when it's DST, 0 otherwise
gmdate('U')
будет отводить время по Гринвичу во время летнего времени на час, поэтому вам нужно дать ему +3600
секунд или 1 час, когда наступает летнее время, так что сложите это вместе:
$gmt_time = gmdate('U') + (3600*gmdate('I'));