我有以下几点

$var = "2010-01-21 00:00:00.0"

我想将这个日期与今天的日期进行比较(即我想知道这个$var是否在今天之前或等于今天)

我需要使用什么函数?


当前回答

如果你做事有时间和日期,碳是你最好的朋友;

安装包,然后:

$theDay = Carbon::make("2010-01-21 00:00:00.0");

$theDay->isToday();
$theDay->isPast();
$theDay->isFuture();
if($theDay->lt(Carbon::today()) || $theDay->gt(Carbon::today()))

Lt =小于, Gt =大于

在这个问题中:

$theDay->gt(Carbon::today()) ? true : false;

还有更多;

其他回答

试试这个:

if (date("Y-m-d",strtotime($funding_dt)) >= date("Y-m-d",strtotime('31-01-2007')))
{
    echo "ok";
} else {
    echo "not";
}

几年后,我赞同鲍比·杰克的观察:过去的24小时不是今天!!我很惊讶这个答案得到了这么多的好评……

要比较某个日期是否小于、等于或大于另一个日期,首先你需要把它们“调低”到一天的开始。换句话说,确保你说的是两个日期的相同00:00:00时间。 这可以简单而优雅地完成:

strtotime("today") <=> strtotime($var)

如果$var的时间部分像OP指定的那样是00:00:00。

将<=>替换为你需要的任何东西(或在php 7中保持这样)

而且,很明显,我们说的是两个时区相同。 有关支持的时区列表

一些给出的答案没有考虑到今天!

这是我的建议。

$var = "2010-01-21 00:00:00.0"
$given_date = new \DateTime($var);

if ($given_date == new \DateTime('today')) {
  //today
}

if ($given_date < new \DateTime('today')) {
  //past
}

if ($given_date > new \DateTime('today')) {
  //future
}

如果你做事有时间和日期,碳是你最好的朋友;

安装包,然后:

$theDay = Carbon::make("2010-01-21 00:00:00.0");

$theDay->isToday();
$theDay->isPast();
$theDay->isFuture();
if($theDay->lt(Carbon::today()) || $theDay->gt(Carbon::today()))

Lt =小于, Gt =大于

在这个问题中:

$theDay->gt(Carbon::today()) ? true : false;

还有更多;

你可以使用DateTime类:

$past   = new DateTime("2010-01-01 00:00:00");
$now    = new DateTime();
$future = new DateTime("2021-01-01 00:00:00");

比较运算符工作*:

var_dump($past   < $now);         // bool(true)
var_dump($future < $now);         // bool(false)

var_dump($now == $past);          // bool(false)
var_dump($now == new DateTime()); // bool(true)
var_dump($now == $future);        // bool(false)

var_dump($past   > $now);         // bool(false)
var_dump($future > $now);         // bool(true)

也可以从DateTime对象中获取时间戳值并进行比较:

var_dump($past  ->getTimestamp());                        // int(1262286000)
var_dump($now   ->getTimestamp());                        // int(1431686228)
var_dump($future->getTimestamp());                        // int(1577818800)
var_dump($past  ->getTimestamp() < $now->getTimestamp()); // bool(true)
var_dump($future->getTimestamp() > $now->getTimestamp()); // bool(true)

*注意===在比较两个不同的DateTime对象时返回false,即使它们表示相同的日期。