当我进行转换时
$date = '09/20/2012 02:00';
echo $stamp = strtotime($date);
给了我1348099200,但当我通过网站在线转换时,它会显示2小时前的时间。
如何添加2小时?
strtotime
函数总是相对于now()
,后者相对于一个名为时区的php.ini设置(实际上是:date.timezone
,请参阅下面的链接)。
所以你应该说你的服务器(或网站)位于哪个时区,配置它,你不需要添加这两个小时。如果夏令时发生变化,这两个小时甚至可能会发生变化,所以不要将其硬编码到应用程序中。
date_default_timezone_set
文档date.timezone
字符串文档
(假设:希腊现在UTC+2,但现在是夏天)
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');
试试这个,它会工作
$date1 = '09/20/2012 02:00';
echo $stamp = strtotime("+2 hours",strtotime($date1));
echo date('Y-m-d h:i', $stamp);
您使用哪个时区作为默认时区,在线工具使用哪个时区?我猜在线工具的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