1

您能否建议如何从 unixtime 中删除一个小时。

我有一个 unixtime,我需要在转换为正常时间之前删除一个额外的小时。你能建议如何做到这一点吗?

另外,Unixtime 是否受 GMT 时间变化的影响?

4

1 回答 1

5

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 检测它是否是 DST,并且基本上可以进行适当的调整。

使用获取 UTC 时间gmdate

$utc_time = gmdate('U'); // return Unix seconds in UTC timezone

检测它是否是 DST 使用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'));
于 2011-04-06T00:06:18.353 回答