使用strtotime时加2小时

时间:2012-07-19 23:13:06

标签: php

当我进行此转换时

$date = '09/20/2012 02:00';
echo $stamp = strtotime($date);

给了我 1348099200 ,但是当我通过网站在线转换时,会显示2小时前的时间。

如何添加2小时?

4 个答案:

答案 0 :(得分:3)

strtotime函数始终相对于now(),它相对于名为timezone的php.ini设置(实际上:date.timezone,请参阅下面的链接)。

因此,您应该说明您的服务器(或网站)所在的时区,配置它,您不需要添加这两个小时。如果夏令时发生变化,这两个小时甚至可能会发生变化,因此请勿在应用程序中进行严格编码。

(假设:现在是希腊UTC + 2,不过是夏天)

答案 1 :(得分:3)

date_default_timezone_set('Europe/London');
$date = new DateTime('09/20/2012 02:00');
$date->modify('+2 hour');
echo date_format($date, 'Y-m-d h:i');

答案 2 :(得分:1)

试试这个它会起作用

$date1 = '09/20/2012 02:00'; echo $stamp = strtotime("+2 hours",strtotime($date1)); echo date('Y-m-d h:i', $stamp);

答案 3 :(得分:0)

您使用哪个时区作为默认值,在线工具使用的是什么时区?我猜测在线工具的TZ是GMT(UTC)而你的是GMT + 2,这可以解释差异。

我建议明确设置您的TZ,或使用基于GMT的时间戳来避免这种模糊性。这样你就可以确定你使用的是什么基础,并且TZ转换很简单。

例如:

$ts = new DateTime('09/20/2012 02:00', new DateTimeZone('America/Lima'));
$ts->setTimeZone(new DateTimeZone('Asia/Tokyo'));
echo $ts->format('Y-m-d H:i:sP') . "\n";

上面的代码输出:

2012-09-20 16:00:00+09:00

HTH