首页 > 解决方案 > 使用 PHP 将日期和时间转换为其他日期和时间

问题描述

2019-11-26T16:30:00+01:00从 API 获取格式的日期,并希望将其转换为Di. 26. Nov. 2019 / 16:30.

我正在使用以下代码,但总是有 1 小时的差异:Di. 26. Nov. 2019 / 15:30 Uhr.

如果我使用2019-11-26T16:30:00+02:00- 我会得到Di. 26. Nov. 2019 / 14:30 Uhr(提前 2 小时)。

这是我的php代码:

$timstp = strtotime('2019-11-26T16:30:00+1:00');
echo date('d.m.Y H:i:s', $timstp);

我怎样才能得到正确的日期?

标签: phpdatetime

解决方案


使用 DateTime 类。format 方法以英文返回结果。

$input = '2019-11-26T16:30:00+1:00';
$date = date_create($input)->format('D. d. M. Y /H:i \U\h\r');
echo $date;  //Tue. 26. Nov. 2019 /16:30 Uhr

对于其他语言(如德语)的输出,我推荐 DateTime 扩展类dt

$input = '2019-11-26T16:30:00+1:00';
$date = dt::create($input)->formatL('D d. M Y / H:i \U\h\r','de_DE');
echo $date; //Di. 26. Nov. 2019 / 16:30 Uhr

更新:

API 是否从不同时区获取条目?如果是这样,问题是需要什么?时区的本地时间或可比性的唯一时基?上面的示例显示了时区的本地时间。要创建一个唯一的基础,DateTime 对象可以如何转换为不同的时区 UTC。

$input = '2019-11-26T15:30:00+5:00';
$date = date_create($input)
  ->setTimeZone(new DateTimeZone('UTC'))
  ->format('D. d. M. Y / H:i:s')
;
echo $date;  //Tue. 26. Nov. 2019 / 10:30:00

推荐阅读