php日期少于另一个日期

时间:2013-06-26 19:55:59

标签: php date compare strtotime

给出这种日期对象 date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))

例如,它可能会给出“八月的第一个星期一”的mm / dd / yyyy日,

如何确定此日期是否大于,小于或等于今天的日期?

我需要一个now()方法,它以这种格式工作,可以在日期对象之间进行比较

我还没有尝试过date()< date(),但是。但我认为这不会起作用

任何有识之士

2 个答案:

答案 0 :(得分:25)

我一开始误解了你的问题。您没有在比较中使用日期对象,而是使用日期的字符串表示形式(由date创建)。

将日期的几乎任何字符串表示与当前时间进行比较很容易:

$now = time();
$date = '2015/03/12'; #could be (almost) any string date

if (strtotime($date) > $now) {
    #$date occurs in the future
} else {
    #$date occurs now or in the past
}

将日期字符串与当前进行比较只是稍微复杂一些。这是一种方法:

$today_start = strtotime('today');
$today_end = strtotime('tomorrow');
$date = '2015/03/12'; #could be (almost) any string date

$date_timestamp = strtotime($date);

if ($date_timestamp >= $today_end) {
    #$date occurs after today
} elseif ($date_timestamp < $today_start) {
    #$date occurs before today
} else {
    #$date occurs today
}

不是使用time将当前时间缩短到第二个,而是计算当前日期的两个中午的时间戳。然后你比较那些。

有更聪明的方法可以做到这一点(例如比较日期和今天的YYYY/MM/DD表示),但这个例子很好地构建了第一个。

答案 1 :(得分:18)

比较时间戳:

if (strtotime($numerical." ".$day." of ".date("F")) < time()) {
    // older
} else {
    // newer
}

这是可能的,因为strtotime()也会返回自1.1.1970和time()以来的秒数。在PHP中,您可以轻松地比较整数......