【问题标题】:problems in comparing two dates in php, minutes always 0在php中比较两个日期的问题,分钟总是0
【发布时间】:2015-06-21 12:19:02
【问题描述】:

我需要设置相同的日期比较,我首先使用这个 php 代码进行练习,但是无论我如何更改日期,我最终都会得到小时和秒,但分钟总是 0。顺便说一句,理想情况下,我希望能够以欧洲格式dd/mm/yy hh:mm 编写日期,但这不起作用,所以我将其调整为美国格式。无论如何感谢您的帮助。

date_default_timezone_set('Europe/London');
$date= new DateTime('2015-06-21 18:32:00');
$now = new DateTime();
$interval = $date->diff($now);
echo "difference " . $interval->d . " days, " . $interval->h." hours, ".$interval->m." minutes";

【问题讨论】:

标签: php datetime datediff


【解决方案1】:

您在用于表示间隔分钟的属性上犯了一个简单的错误,它是i 而不是mm 实际上是 Months 属性。

这也是您使用欧洲格式设置日期的方式

$date = DateTime::createFromFormat('d/m/Y H:i:s', '21/06/2015 18:32:00');
$now = new DateTime();
$interval = $date->diff($now);
echo "difference " . $interval->d . " days, " . $interval->h." hours, ".$interval->i." minutes";

如果您执行print_r($interval),您将看到所有类似这样的属性

DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 6
    [i] => 4
    [s] => 15
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 0
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)

【讨论】:

  • 这可以合并到 SQL 查询中吗,我想加载日期字段小于当前日期的所有项目.. 会不会像 SELECT * FROM table WHERE datefield < NOW()
  • 是的,但这确实是另一个问题。也可以使用WHERE datefield BETWEEN '2015-01-01 00:00:01' AND '2015-02-01 00:00:01'类型语法
  • 我知道,但我不想等 90 分钟再问另一个问题,所以如果您能在这里帮助我,我将不胜感激。我真的不明白这将如何工作,只要它小于当前时间,我不需要它处于任何间隔
  • 语法与您在第一条评论中使用的完全一样
【解决方案2】:

$interval->i 表示分钟,$interval->m 表示月。

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多