【问题标题】:Add one billion seconds to DateTime object in PHP [duplicate]在 PHP 中向 DateTime 对象添加 10 亿秒 [重复]
【发布时间】:2019-06-19 09:39:24
【问题描述】:

我在向 DateTime 对象(用户输入变量)添加 10 亿秒时遇到了很多麻烦并且没有成功。

用户以 YYYY-m-d H:i:s 格式输入他们的出生日期 (DOB)。然后将其转换为 DateTime()。然后将 10 亿秒添加到 DOB。输出为 DOB + 10 亿秒,格式为 YYYY-m-d H:i:s。

我不知道怎么做,也没有从其他帖子中找到任何合适的例子来解决这个问题。

欢迎任何帮助。谢谢

【问题讨论】:

  • 到目前为止你尝试过什么?应该有大量示例可以为现有的 DateTime 实例增加几秒钟

标签: php date datetime object


【解决方案1】:

你可以使用 DateTime::add 函数http://php.net/manual/en/datetime.add.php

$date = new DateTime(DOB);
$date->add(new DateInterval('PT1000000000S'));
echo $date->format('Y-m-d H:i:s') . "\n";

【讨论】:

  • 一个很好的 DateInterval 用法示例。
【解决方案2】:
echo date("Y-m-d H:i:s", (strtotime('1991-12-13 06:25:12') + 1000000000));

您可以在一行代码中完成。使用 strtotime 转换您的日期并添加秒数。不过,在 dob 字段中要求 H:i:s 很奇怪。

输出为2023-08-21 09:11:52(也通过here 进行双重检查)

【讨论】:

    【解决方案3】:

    伙计,我一直讨厌做日期时间逻辑。根据我的经验,最简单的方法是将所有内容都转换为 Unix 时间戳。 I 整数比 DateTime 对象更容易操作(尽管这种心态可能会被#backintheday 保留)。

    您的逻辑是否类似于以下内容:

    $dob = strtotime('2018-1-1 12:00:00');
    echo $dob;
    echo  "\n";
    $sum = ($dob + 1000000000);
    echo date('r', $sum);
    

    这应该会让你朝着你想要的方向前进。

    *请确保您的机器是 64 位的,否则由于 32 位整数的限制,2039 年之后的日期将无法工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-02
      • 2013-06-08
      • 2011-08-27
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      相关资源
      最近更新 更多