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