Php 如何检查是否已过一天?
我正在使用PHP从电子邮件中获取日期。我想使用电子邮件中的日期将日期设置为30天,这样我就可以与我当前的日期进行比较,看这一天是否已经过去 以下是日期的输出: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
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