Php 查找日期是否早于30天

Php 查找日期是否早于30天,php,string,datetime,date,time,Php,String,Datetime,Date,Time,日期字符串如下所示 2011-08-1917:14:40 (年-月-日小时:分:秒) 如何确定日期是否比当前日期早30天以上?尝试使用以下方法: if(strtotime('2011-08-19 17:14:40') < strtotime('-30 days')) { // this is true } if(strotime('2011-08-1917:14:40')

日期字符串如下所示

2011-08-1917:14:40

(年-月-日小时:分:秒)


如何确定日期是否比当前日期早30天以上?

尝试使用以下方法:

 if(strtotime('2011-08-19 17:14:40') < strtotime('-30 days')) {
     // this is true
 }
if(strotime('2011-08-1917:14:40')
此外,这个字符串看起来像是作为datetime/timestamp字段存储在SQL中的。您可以使用以下命令直接从数据库中选择具有旧日期的所有条目:

SELECT ... WHERE `datetime` + INTERVAL 30 DAY < NOW()
选择。。。其中`datetime`+间隔30天
strotime('2011-08-19 17:14:40')+30*24*60*60
您可以按如下方式使用碳

if (30 - ((new \Carbon\Carbon($given_date, 'UTC'))->diffInDays()) < 0) {
    echo "The date is older than 30 days";
}
if(30-((new\Carbon\Carbon($given_date,'UTC'))->diffInDays())<0){
回显“日期早于30天”;
}

如果您使用的是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

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

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

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

它应该是
strotime('2011-08-19 17:14:40')+30*24*60*60更正。@没有人超过2000名代表。你可以自己更正,就像我一样。:)@gion_13通常情况下,进行此类
24*60*60
计算是个坏主意,因为在处理夏令时之类的事情时,这些计算可能会变得不准确。最好使用RiaD建议的方法,让
strotime()
处理相对时间计算@代理我不同意你上面的观点,
30*24*60*60
总是正好
30天
不管你在世界的哪个角落。你能链接到diff($now)->天的文档吗?我想调整它几个小时,而不是几天。谢谢返回一个。DateInterval对“小时”有一个
h
属性,但它实际上是差异的一部分(因为它与y(年)、m(月)、d(天)等有关)。为了得到时间,我会做
($now->getTimestamp()-$someDate->getTimestamp())/3600
。这将返回一个十进制数。如果你想让它成为一个整数,你可以选择使用,等等。我喜欢这个答案,比公认的答案要好得多。
diff
方法看起来非常优雅。请注意,月份可能有4天的组合:28天、29天、30天和31天。请注意,问题和答案都不使用单词month(除描述pf格式外)。在我看来,这似乎是对这个问题的过度使用。还有更简单的普通php选项
(new TotalFullDays(
    new FromRange(
        new FromISO8601('2011-08-19 17:14:40'),
        new Now()
    )
))
    ->value();