【问题标题】:PHP - Show the date with hours, minutes and seconds set to zero [closed]PHP - 显示日期,小时,分钟和秒设置为零[关闭]
【发布时间】:2013-12-18 17:50:24
【问题描述】:

我需要一个将小时、分钟和秒设置为“00:00:00”的 DateTime 对象

为什么下面仍然输出 '20:53:19' 而不是 '00:00:00'?

const DATETIME_TO_MYSQL_DATETIME = 'Y-m-d H:i:s';
const DATE_FORMAT = 'j.n.Y';
    $this->today = DateTime::createFromFormat(self::DATE_FORMAT, (new DateTime())->format(self::DATE_FORMAT));
   die($this->today->format(self::DATETIME_TO_MYSQL_DATETIME));

输出: 2013-12-02 20:53:19

【问题讨论】:

  • 如果您只需要日期,为什么还要在意时间呢?
  • 为什么不干脆去掉DATETIME_TOMYSQL_DATETIME格式的时间部分..?
  • @MadaraUchiha 我需要那个 DateTime 对象用于 mysql 查询,但小时、分钟等必须为 0
  • 如果您完全离开小时和分钟,查询可能会假定为零

标签: php date format


【解决方案1】:

用途:

const DATETIME_TO_MYSQL_DATETIME = 'Y-m-d 00:00:00';

如果您希望小时/分钟/秒为00:00:00,无论时间如何。

【讨论】:

  • 是的,这就是我想要的,我不知道这个,谢谢。但无论如何,为什么我的代码不能按我的预期工作?
  • @Krab 你是什么意思?你正在传递'Y-m-d H:i:s'; H:i:s = Hours:Minutes:Seconds。
  • 是的,但是 DateTime 对象不应该包含有关小时等的信息,因为我只使用年、月和日创建它,所以我认为它应该返回 00:00:00
【解决方案2】:
const DATETIME_TO_MYSQL_DATETIME = 'Y-m-d 00:00:00'

没有分钟、小时或秒。

【讨论】:

    【解决方案3】:

    只需使用:

    $this->today = new DateTime('today');
    

    【讨论】:

      【解决方案4】:

      它输出小时、分钟和秒的原因是因为您指定了日期的格式。从“Y-m-d H:i:s”中删除“H:i:s”应该会删除时间戳。将“H:i:s”替换为“00:00:00”将设置时间戳。

      您可以查看 PHP date() 函数了解更多格式。

      例子:

      var_dump(date('Y-m-d'));
      // string(10) "2013-12-02"
      
      $current_date = date('Y-m-d');
      echo $current_date;
      // 2013-12-02
      

      【讨论】:

        猜你喜欢
        • 2014-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        • 2015-08-21
        • 1970-01-01
        相关资源
        最近更新 更多