【问题标题】:Difference of minute between two dateTime两个日期时间之间的分钟差
【发布时间】:2020-09-29 09:06:21
【问题描述】:

我需要以这种格式写出这两个日期时间之间的分钟差。我收到此错误,请帮助:

未捕获的异常:DateTime::__construct():无法在位置 0 (2) 解析时间字符串 (27/09/2020 01:00:19 AM):

$datetime1 = new DateTime('27/09/2020 01:00:19 AM');
                            $datetime2 = new DateTime('27/09/2020 01:00:19 AM');
                            $interval = $datetime1->diff($datetime2);
                            echo $interval->format('%hh %im');

【问题讨论】:

标签: php


【解决方案1】:

解析日期格式时,php遵循specific rules

如果日期分隔符是/,那么php 将尝试使用美国格式mm/dd/y 或符号YY/mm/dd

您可以在使用DateTime::createFromFormat() 创建对象时指定日期/时间格式:

$datetime1 = DateTime::createFromFormat('d/m/Y g:i:s a', '27/09/2020 01:00:19 AM');
$datetime2 = DateTime::createFromFormat('d/m/Y g:i:s a', '27/09/2020 01:00:19 AM');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%hh %im');

这个输出:

0h 0m

Fiddle

【讨论】:

  • 也许添加原因:PHP 正在考虑将日期设置为 /m/d/y-d-m-y 格式。所以27/09/2020 被解析为月 = 27,日 = 9,年 = 2020。显然没有一个月 29
  • 在将 datetime2 更改为 28/09/2020 01:00:19 AM 时,它不会给出任何结果。表示不同的日期
  • @user3153807 这是因为您只显示差异的小时和分钟,而不是天。这是一个完全不同的问题
【解决方案2】:

你可以这样做:

$datetime1 = new DateTime(str_replace('/','-','27/09/2020 01:00:19 AM'));
$datetime2 = new DateTime(str_replace('/','-','27/09/2020 01:00:19 AM'));
$interval = $datetime1->diff($datetime2);
echo $interval->format('%hh %im');

【讨论】:

    猜你喜欢
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    相关资源
    最近更新 更多