-1

我很长一段时间都在努力设定一个具体的日期,但我没有得到正确的输出。我想从用户那里获取日期并将该日期与比今天大 15 天的日期进行比较。如果它早于 15 天,则转换为今天,否则打印它是什么。

$todaydate= $_GET['date'];// getting date as 201013 ddmmyy submitted by user
$todaydate=preg_replace("/[^0-9,.]/", "", $todaydate); 
$today =date("dmy"); //today ddmmyy
$older= date("dmy",strtotime("-15 day")); // before 15 days 051013
if ($todaydate <= $older){
$todaydate= $today;}

问题是,它以日期为数字并给出错误的结果。

4

3 回答 3

6

比较日期字符串有点麻烦,而且容易失败。尝试比较实际的日期对象

$userDate = DateTime::createFromFormat('dmy', $_GET['date']);
if ($userDate === false) {
    throw new InvalidArgumentException('Invalid date string');
}
$cmp = new DateTime('15 days ago');
if ($userDate <= $cmp) {
    $userDate = new DateTime();
}

此外,strtotime有一些严重的限制(参见http://php.net/manual/function.strtotime.php#refsect1-function.strtotime-notesand)并且在非美国语言环境中没有用。该DateTime课程更加灵活和最新。

于 2013-10-21T04:43:27.043 回答
1

试试这个:

<?php
$todaydate = date(d-m-Y,strtotime($_GET['date']));
$today = date("d-m-Y");
$older= date("d-m-Y",strtotime("-15 day"));

if (strtotime($todaydate) <= strtotime($older)) 
{
$todaydate= $today;
}
?>
于 2013-10-21T04:45:13.480 回答
0
$previousDate = "2012-09-30";

if (strtotime($previousDate) <= strtotime("-15 days")) {
    //the date in $previousDate is earlier or is equal to the date 15 days before from today
}
于 2013-10-21T04:39:34.357 回答