首页 > 解决方案 > 在 DateTime (PHP) 中添加“x”小时、“x”分钟和“x”秒

问题描述

我有一个特定的时间戳并想添加一个'x' hours,'x' minutes'x' seconds它。

我试过这样:

date_default_timezone_set('UTC'); 
$now = DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''));
$now = $now->setTimezone(new DateTimeZone('Europe/London'))->format('Y-m-d H:i:s.u');

echo '<br> Localized: '.$now;

echo '<br> Time1: '.date("Y-m-d H:i:s", strtotime('+3 hours +5 minutes +4 seconds', $now));

echo '<br> Time2: '.date("Y-m-d H:i:s", strtotime('+0 hours +5 minutes +4 seconds', $now));

Localized: 2018-06-12 10:51:32.166452

Time1: 1970-01-01 03:38:42
Time2: 1970-01-01 00:38:42

但结果是不正确的......我在这里做错了什么?

标签: php

解决方案


您可以通过add方法更改DateTime对象。它需要DateInterval对象。但是如果你想创建新对象,它会改变对象,你应该使用DateTimeImmutable

$now->add(new DateInterval('PT3H5M4S'));

P- 必需的前缀表示“期间”

T- 表示“时间”它必须在时间段之前出现,因为日期和时间段等于 charM

在这种情况下:

  • 3H- 3小时
  • 5M- 5分钟
  • 4S- 4 秒

完整周期示例可以是这样new DateInterval('P1Y2M5DT3H5M4S')的,将等于周期 1 年 2 个月 5 天 3 小时 5 分 4 秒。


推荐阅读