【问题标题】:replace date with another date but keep the same time PHP用另一个日期替换日期但保持相同的时间 PHP
【发布时间】:2017-11-02 23:26:16
【问题描述】:

我有一个具有日期和时间的 datetime 变量,我试图用另一个日期替换日期(更不用说第二天)但保持相同的时间。

我的 datetime 变量如调试器所示:

我想将日期更改为 11-04 而不是 11-03(第二天,增加一天),但会保持时间不变,因此最终数据时间将是 2017-11-04 07:15: 00.000000

【问题讨论】:

  • 原始日期时间变量是什么格式
  • ... 另外,$newdate 变量的格式是什么?它是一个字符串,一个整数时间戳还是其他东西。请在您为这些变量赋值的位置显示您的代码
  • 对不起,我在我的问题中添加了格式
  • 你能举一个真实的例子吗,那个格式看起来有点奇怪
  • 显示您的代码在哪里为这些变量赋值

标签: php date datetime


【解决方案1】:

如果原始变量是 PHP DateTime 类的实例,可以使用 SetDate 方法。它会更改日期,但会保留时间。

http://php.net/manual/en/datetime.setdate.php

<?php
$date = new DateTime();
echo $date->format('Y-m-d H:i:s')."\n";
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d H:i:s')."\n";

输出:

2017-11-02 22:47:34
2001-02-03 22:47:34

【讨论】:

  • PHP 文档包含许多示例,但重点是 - 我已经更新了答案。
  • 除了 OP 试图解释他想要使用的字符串中有一个日期。不仅仅是发明一个日期和时间来输出。
  • 是的,问题已经更新,所以我的回答不再相关。看起来不是需要更改的日期,而是日期 format
  • 谢谢,有办法设置第二天吗?
  • @SMH 是的,您可以使用$date-&gt;modify("+1 day");。但实际上,请查看php.net/manual/en/class.datetime.php 的 DateTime 文档 - 有许多方便的方法。 “修改”的描述位于php.net/manual/en/datetime.modify.php
【解决方案2】:

有很多方法可以做到这一点

这是一个使用 DateTime 对象的例子

<?php
$d = '2017-11-03 15:15:00.000000';

$dt = new DateTime($d);
echo 'Check original date ' . $dt->format('Y-m-d H:i:s.u') . PHP_EOL;;
// add 1 day
$dt->add(new DateInterval('P1D'));

echo 'New date ' . $dt->format('Y-m-d H:i:s.u');

结果:

Check original date 2017-11-03 15:15:00.000000
New date 2017-11-04 15:15:00.000000

【讨论】:

  • 谢谢,但我需要保持时间,但只需更改日期
  • 好的,我把时间加回到date()格式中
  • @RiggsFolly 如果我不得不猜测的话,OP 有两个 date-like 字符串(其中第一个可能是 ISO 8601 格式)。他们想从第一个开始的时间部分并将其设置为第二个的日期
  • @Phil 是的,这听起来很可能。我会看看 OP 对第二次尝试的看法
  • 我已经用来自调试器的数据更新了问题,现在清楚了吗?谢谢
猜你喜欢
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 2021-02-19
  • 2017-03-23
  • 1970-01-01
  • 2011-06-26
相关资源
最近更新 更多