如何检查一天是否过去了?
How to check if day is passed?
我正在 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
我正在 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