PHP日期比较超过15天

时间:2013-10-21 04:26:52

标签: php datetime

我正在努力设定一个特定的日期,但我没有得到正确的解决方案。 我希望从用户那里获取日期,并将该日期与当天早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;}
问题是,它将日期作为数字并给出错误的结果。

3 个答案:

答案 0 :(得分:5)

比较日期字符串有点hacky并且容易出错。尝试比较实际日期对象

$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课程更灵活,更新。

答案 1 :(得分: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;
}
?>

答案 2 :(得分: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
}