Buk*_*uki 1 php gmt unix-timestamp
你能否请一下如何从unixtime中删除一小时.
我有一个unixtime,我需要在转换到正常时间之前删除额外的一小时.你能建议怎么做吗?
另外,Unix时间受GMT时间变化的影响吗?
Unix时间戳以秒为单位测量,一小时有3600秒(60分钟,每个60秒= 60*60 = 3600),所以只需减去:
$timestamp = time();
$timestamp_less_one_hour = $timestamp - 3600;
Run Code Online (Sandbox Code Playgroud)
您也可以strtotime用来完成相同的事情:
$timestamp_less_one_hour = strtotime('-1 hour', $timestamp);
Run Code Online (Sandbox Code Playgroud)
或者,如果$timestamp只是"现在",您可以在strtotime没有第二个参数的情况下调用:
$timestamp_less_one_hour = strtotime('-1 hour'); // time() - 1 hour
Run Code Online (Sandbox Code Playgroud)
所以你似乎在寻找GMT时间,问题是GMT可以包括夏令时(DST),而PHP中的"GMT"日期函数实际上返回UTC时间,它没有DST的概念.幸运的是,你可以使用PHP检测它是否是DST,并且基本上可以适当调整.
获取UTC时间使用gmdate:
$utc_time = gmdate('U'); // return Unix seconds in UTC timezone
Run Code Online (Sandbox Code Playgroud)
使用I以下方法检测是否为DST :
$is_dst = gmdate('I'); // 1 when it's DST, 0 otherwise
Run Code Online (Sandbox Code Playgroud)
gmdate('U')将在DST期间跟踪GMT时间一小时,因此你需要给它+3600秒,或者它是DST的1小时,所以把它放在一起:
$gmt_time = gmdate('U') + (3600*gmdate('I'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |