如何在PHP中将Unix时间戳转换为CET时间?

时间:2019-03-29 13:29:23

标签: php datetime

我有一个简单的问题要问你。我在php中有一个unix timestamp变量,我称之为$ unix,它包含当前的unix时间戳(在1/1/1970 00:00:00 UTC之后经过的秒数),根据定义,它是UTC时间。我想将其转换为CET时间中的日期字符串,例如“ 29/03/19 14:50”。对于我来说,拥有CET格式至关重要,不要在夏令时(DST)开始时更改它。换句话说,我要的日期是DST的UTC + 1,以及DST期间的日期,并且必须自动完成。 我正在考虑使用此功能:

date_create_from_format ( string $format , string $time [, DateTimeZone $timezone ] )

所以我应该这样写:

date_create_from_format ('d/m/y h:i' , $unix, 'CET');

我错了吗?不能使我信服的是,在this page中,它写得很狡猾:

  

当time参数包含UNIX时间戳(例如946684800)或指定时区(例如2010-01-28T15:00:00 + 02:00)时,timezone参数和当前时区将被忽略。

有什么方法可以做我想要的吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

首先将您的日期时间转换为php数据时间格式...

 gmdate("Y-m-d\TH:i:s\Z", $timestamp);

现在您可以显示从UTC时间到特定时区的PHP日期时间。

$date_time_format = $datetime->format('Y-m-d H:i:s');
$time_zone_from="UTC";
$time_zone_to='Asia/Kolkata';
$display_date = new DateTime($date_time_format, new DateTimeZone($time_zone_from));
$display_date->setTimezone(new DateTimeZone($time_zone_to));
echo $display_date->format('d-m-Y H:i:s')

答案 1 :(得分:0)

这应该带来您想要的结果:

date_default_timezone_set( 'CET' );
echo date('d/m/y h:i', $unix );