查找日期是否超过30天

日期字符串如下所示

2011-08-19 17:14:40

(年-月-日时数: 分钟: 秒)

如何查明该日期是否早于当前日期(超过30天) ?

97472 次浏览

尝试使用这样的东西:

 if(strtotime('2011-08-19 17:14:40') < strtotime('-30 days')) {
// this is true
}

此外,这个字符串看起来像是存储在 SQL 中的日期时间/时间戳字段。您可以使用以下方法直接从数据库中选择具有旧日期的所有条目:

SELECT ... WHERE `datetime` + INTERVAL 30 DAY < NOW()
strtotime('2011-08-19 17:14:40') + 30 * 24 * 60 * 60 < time();

您可以按如下方式使用 Carbon

if (30 - ((new \Carbon\Carbon($given_date, 'UTC'))->diffInDays()) < 0) {
echo "The date is older than 30 days";
}

如果你使用的是 PHP 5.3或更高版本,你可以这样做:

$someDate = new \DateTime('2011-08-19 17:14:40');
$now = new \DateTime();


if($someDate->diff($now)->days > 30) {
echo 'The date was more than 30 days ago.';
}

使用 蛋白酥皮库,这至少可以通过两种方式完成。

第一个看起来像这样:

(new Future(
new DateTimeParsedFromISO8601String('2011-08-19 17:14:40'),
new NDays(30)
))
->earlierThan(
new Now()
);

语义如下: 首先,解析来自 ISO8601字符串的日期,然后创建一个比该日期晚30天的未来日期,最后将其与当前日期时间(即 now)进行比较。

第二种方法是从日期时间范围创建一个间隔,并计算它包含的天数。看起来是这样的:

(new TotalFullDays(
new FromRange(
new FromISO8601('2011-08-19 17:14:40'),
new Now()
)
))
->value();

这两种方法都非常直观,不会让您记住特殊的 php 日期时间表达式。相反,每个实现都是自动完成的; 您只需要构建一个适合您需要的正确对象。