php - 如何检查一天是否过去了?

标签 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";
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);
}
?>

我试过这个:

$expiry_date = date($spam_date, strtotime('+30 days'));
echo $expiry_date;

它给我这样的输出:

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_date 将日期设置为 30 天,以及如何检查该日期是否已过?

谢谢。

最佳答案

<?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

现场演示 https://3v4l.org/OeGRX

关于php - 如何检查一天是否过去了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57939778/

相关文章:

php - 年、月、日的 URL 重写

c# - MailKit:如何从 MimeMessage 本地下载所有附件

javascript - 如何使用 iframe 避免自定义 Web 邮件的 https 安全警告?

c# - 使用 MailKit 检查 imap 文件夹是否存在

imap - 抑制仿冒PHP imap_open()通知: insecure server advertised AUTH=PLAIN

python - 如何使用 imaplib 获取 'Message-ID'

javascript - Jquery AJAX显示具有相同类的每个选择标签的onchange数据库记录

javascript - 如何在 JavaScript 中创建 aes-256 加密

php - 获取 WordPress 设置电子邮件

php - MediaWiki/Apache/PHP/MySQL 与 OpenSSL 的数据库连接需要 SSL