2

当我进行此转换时

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

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

如何增加 2 小时?

4

4 回答 4

3

strtotime函数总是相对于now()php.ini 设置称为 timezone 的东西(实际上:date.timezone,请参阅下面的链接)。

所以你应该说你的服务器(或网站)位于哪个时区,配置它,你不需要添加这两个小时。如果夏令时更改,这两个小时甚至可能会更改,因此不要将其硬编码到您的应用程序中。

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

于 2012-07-19T23:15:44.007 回答
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');
于 2012-07-19T23:19:13.257 回答
1

试试这个,它会工作

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

于 2015-01-16T10:40:54.900 回答
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

高温高压

于 2012-07-19T23:27:02.343 回答