从PHP中删除一小时(从_UNIXTIME)

从PHP中删除一小时(从_UNIXTIME),php,gmt,unix-timestamp,Php,Gmt,Unix Timestamp,你能告诉我如何从unixtime中删除一个小时吗 我有一个unixtime,在转换到正常时间之前,我需要删除一个额外的小时。你能告诉我怎么做吗 此外,Unixtime是否受GMT时间变化的影响?Unix时间戳以秒为单位,一小时有3600秒(60分钟,每分钟60秒=60*60=3600),因此只需减去: $timestamp = time(); $timestamp_less_one_hour = $timestamp - 3600; 您还可以使用来完成相同的操作: $timestamp_les

你能告诉我如何从unixtime中删除一个小时吗

我有一个unixtime,在转换到正常时间之前,我需要删除一个额外的小时。你能告诉我怎么做吗


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

Unix时间戳以秒为单位,一小时有3600秒(60分钟,每分钟60秒=60*60=3600),因此只需减去:

$timestamp = time();
$timestamp_less_one_hour = $timestamp - 3600;
您还可以使用来完成相同的操作:

$timestamp_less_one_hour = strtotime('-1 hour', $timestamp);
或者,如果
$timestamp
只是“现在”,则可以调用
strotime
,而无需第二个参数:

$timestamp_less_one_hour = strtotime('-1 hour'); // time() - 1 hour

因此,您似乎在寻找GMT时间,问题是GMT可能包括夏令时(DST),PHP中的“GMT”日期函数实际上返回UTC时间,而UTC时间没有DST的概念。幸运的是,您可以使用PHP检测它是否是DST,并基本上进行适当的调整

使用以下命令获取UTC时间:

使用
I
检测是否为DST:

$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'));

Unix时间戳以秒为单位,一小时有3600秒(60分钟,每分钟60秒=60*60=3600),因此只需减去:

$timestamp = time();
$timestamp_less_one_hour = $timestamp - 3600;
您还可以使用来完成相同的操作:

$timestamp_less_one_hour = strtotime('-1 hour', $timestamp);
或者,如果
$timestamp
只是“现在”,则可以调用
strotime
,而无需第二个参数:

$timestamp_less_one_hour = strtotime('-1 hour'); // time() - 1 hour

因此,您似乎在寻找GMT时间,问题是GMT可能包括夏令时(DST),PHP中的“GMT”日期函数实际上返回UTC时间,而UTC时间没有DST的概念。幸运的是,您可以使用PHP检测它是否是DST,并基本上进行适当的调整

使用以下命令获取UTC时间:

使用
I
检测是否为DST:

$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'));

$timestamp-(60*60)
?@netcoder你的意思是
$timestamp-3600
:)?@webarto:是的。只是我不喜欢神奇的数字
$timestamp-(60*60)
?@netcoder你的意思是
$timestamp-3600
:)?@webarto:是的。只是我不喜欢神奇的数字<代码>标准时间('-1小时',$timestamp),他已经有时间戳;)我想,他很快:)@Buki:“UNIXTIME”没有一个已知的时区,它是基于你服务器的配置。您是从数据库中提取时间还是向PHP索要时间?@Buki use仅返回GMT时区中的unixtime(以秒为单位),格式为:
$timestamp=gmdate('U')
@Buki:好的,关于
gmdate
和夏令时,有一些细节,请检查我的编辑。
strotime(“-1小时”,$timestamp),他已经有时间戳;)我想,他很快:)@Buki:“UNIXTIME”没有一个已知的时区,它是基于你服务器的配置。您是从数据库中提取时间还是向PHP索要时间?@Buki use仅返回GMT时区中的unixtime(以秒为单位),格式为:
$timestamp=gmdate('U')
@Buki:好的,关于
gmdate
和夏令时,有一些细节,请查看我的编辑。