php - 在 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
但结果是不正确的......我在这里做错了什么?
解决方案
您可以通过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 秒。
推荐阅读
- javascript - 如何更改 js 文件中的 popup.html?
- javascript - 如何使用javascript循环具有不同键值对的JSON数组以根据html中的条件显示特定值
- python - 除值错误外的子图:无效语法
- authentication - 使用 LoginModule JBoss 方法成功登录后,无法(拒绝访问响应)执行带有注释 @RolesAllowed 的 rest 端点
- python - 在 Pandas 中,我有一个数据框,其中有几列定义了一个配置。我想识别具有相同配置的行
- php - Fullcalendar 事件添加/编辑和调整大小。无需重新加载/刷新页面即可获得成功回调
- php - Jenssegers - 如何使用 ID 查找集合中的所有文档
- node.js - 在heroku上动态生成文件
- web - 在烧瓶应用程序中跨 uwsgi 进程共享资源
- kubernetes - GKE 和任务队列