【问题标题】:how to convert unix timestamp to cet time in php?如何在php中将unix时间戳转换为cet时间?
【发布时间】:2019-03-29 23:01:50
【问题描述】:

我有一个简单的问题要问你。我在 php 中有一个 unix 时间戳变量,我称之为 $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 参数和当前时区。

有没有办法做我想做的事? 谢谢!

【问题讨论】:

  • date_create_from_format() 的第三个参数是一个 DateTimeZone 对象。您不能将字符串 'CET' 传递给它。
  • 好的,我写了date_create_from_format('U',time(),new DateTimeZone('CET'))->format('d/m/y h:i'),它给了我 29/03/19 01:47,而它应该是 29/03/19 14:47!请注意,这与我写 date_create_from_format('U',time())->format('d/m/y h:i') 时的结果相同。
  • h 是 12 小时格式,你想要 H ...
  • 04FS 谢谢!!有问题!现在我解决了:date_create_from_format('U',time()+3600)->format('d/m/y H:i'); 这完美地返回了 CET 时间

标签: php datetime


【解决方案1】:

首先将你的日期时间转换成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')

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 2011-01-29
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多