当我进行此转换时
$date = '09/20/2012 02:00';
echo $stamp = strtotime($date);
给了我 1348099200 ,但是当我通过网站在线转换时,会显示2小时前的时间。
如何添加2小时?
答案 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