Php 如何检查是否已过一天?

Php 如何检查是否已过一天?,php,imap,Php,Imap,我正在使用PHP从电子邮件中获取日期。我想使用电子邮件中的日期将日期设置为30天,这样我就可以与我当前的日期进行比较,看这一天是否已经过去 以下是日期的输出: Fri, 13 Sep 2019 20:27:47 +0200 Sun, 8 Sep 2019 21:10:55 +0100 Sun, 8 Sep 2019 21:09:24 +0100 Sun, 8 Sep 2019 21:05:56 +0100 以下是PHP: <?php require_once "Mail.php"; r

我正在使用PHP从电子邮件中获取日期。我想使用电子邮件中的日期将日期设置为30天,这样我就可以与我当前的日期进行比较,看这一天是否已经过去

以下是日期的输出:

Fri, 13 Sep 2019 20:27:47 +0200
Sun, 8 Sep 2019 21:10:55 +0100
Sun, 8 Sep 2019 21:09:24 +0100
Sun, 8 Sep 2019 21:05:56 +0100
以下是PHP:

<?php

require_once "Mail.php";
require_once('Mail/IMAPv2.php');

// Connect to the server:
$username = 'username';
$password = 'password';
$email_number = '';

$spam = '{imap.example.com:993/imap/ssl/novalidate-cert}INBOX.spam';
$spam = imap_open($spam, $username, $password) or die("Can't connect: " . imap_last_error());

if (PEAR::isError($spam)) {
    echo "<span style='font-weight: bold;'>Error:</span> Unable to build a connection.";
}
else
{
    //$spam_emails = imap_search($spam, 'ALL');
    $spam_emails = imap_sort($spam, SORTARRIVAL, 1, SE_UID);

    if($spam_emails !== false) {
        //rsort($spam_emails);
        $res_spam_emails = NavForList($spam_emails, $start_ind);
        $temp_spam_emails = $res_spam_emails['result'];
        $start_idx = $res_spam_emails['start_idx'];
        $limit_idx = $res_spam_emails['limit_idx'];
        $total = $res_spam_emails['total'];
        $total_inbox_unread = count(imap_search($inbox, 'UNSEEN'));
        $total_draft_unread = count(imap_search($draft, 'UNSEEN'));
        $total_spam_unread = count(imap_search($spam, 'UNSEEN'));
        $html = "";

        foreach($temp_spam_emails as $email_number) {
            $overview = imap_fetch_overview($spam, $email_number, FT_UID);
            $spam_from = $overview[0]->from;
            //$spam_subject = utf8_decode(imap_utf8($overview[0]->subject));
            $spam_subject = quoted_printable_decode($overview[0]->subject);
            $spam_date = $overview[0]->date;

            $expiry_date = date($spam_date, strtotime('+30 days'));
            echo $expiry_date;
        }
    }
    imap_close($spam);
}
?>
它给我这样的输出:

OctoberMon, 14 Oct 2019 22:39:12 +000039, 13 thUTCp 2019 20:27:47 +0200
th00000010, 8 thUTCp 2019 21:10:55 +0100
th00000010, 8 thUTCp 2019 21:09:24 +0100
th00000010, 8 thUTCp 2019 21:05:56 +0100
以下是我想要实现的目标:

Sun, 13 Oct 2019 20:27:47 +0200
Tues, 8 Oct 2019 21:10:55 +0100
Tues, 8 Oct 2019 21:09:24 +0100
Tues, 8 Oct 2019 21:05:56 +0100
您能给我举个例子,说明如何使用变量
$spam\u date
将日期设置为30天,以及如何检查这一天是否已经过去


谢谢。

$spam\u date
中有什么?您可以使用DateTime和添加(新的日期间隔(“P30D”)会计
$spam_date
是我已经输出的日期,例如:
2019年9月13日星期五20:27:47+0200
谢谢,但您弄错了。在您编写的代码中,由于现在还不是10月13日,所以当天并没有超过30天。请修复您的代码。@chrisoojer的意思是您想将
now+30天
spam\u日期
进行比较?是的,我想将30天与
spam\u日期
进行比较,无论这一天是否已经过去。
<?php

$spam_date = "Fri, 13 Sep 2019 20:27:47 +0200";
$expiryDate = new \DateTime($spam_date);
$expiryDate->add(new \DateInterval("P30D"));
echo $expiryDate->format("c") . "\n";// ISO 8601 format
//2019-10-13T20:27:47+02:00
echo $expiryDate->format("r") . "\n";//RFC 2822 format
//Sun, 13 Oct 2019 20:27:47 +0200
$now = new \DateTime("now");
if ($expiryDate < $now){
    echo "expiry time is passed";
} else {
    echo "expiry time is not passed";
}

exit;
//outputs
//2019-10-13T20:27:47+02:00 
//Sun, 13 Oct 2019 20:27:47 +0200 
//time is not passed
<?php

$spam_date = "Fri, 13 Sep 2019 20:27:47 +0200";
$expiryDate = new \DateTime($spam_date);
$expiryDate->add(new \DateInterval("P30D"));
echo $expiryDate->format("c") . "\n";// ISO 8601 format
//2019-10-13T20:27:47+02:00
echo $expiryDate->format("r") . "\n";//RFC 2822 format
//Sun, 13 Oct 2019 20:27:47 +0200
$now = new \DateTime("now");
if ($expiryDate < $now){
    echo "expiry time is passed";
} else {
    echo "expiry time is not passed";
}

exit;
//outputs
//2019-10-13T20:27:47+02:00 
//Sun, 13 Oct 2019 20:27:47 +0200 
//time is not passed