我有一个最奇怪的问题:
尝试将今天的日期与$_POST
的日期进行比较。我按如下方式处理参数:
$str1 = date("d-m-Y");
$str2 = date("d-m-Y", strtotime($_POST['dateto']));
我比较日期:
if ($str2 >= $str1) {
// doing what it is supposed to
}
else {
echo "error";
}
现在因为这导致了“错误”,我100%肯定我输入的日期晚于今天的日期,我echo
- 在逻辑{{1}之前比较它所比较的参数结果是:
02-11-2016 if
和 27-10-2016 $str2
。今天是十月份,输入日期是十一月,但它仍然以 false 的形式运行逻辑运算符。
有什么意见吗?
答案 0 :(得分:1)
您正在比较字符串,它们不一样......
我在这里留下一个使用示例:
$todays_Date= strtotime(date("d-m-Y H:i:00",time()));
$input_Date= strtotime("19-11-2008 21:00:00");
if($todays_Date> $input_Date){
echo "Input date is from the past";
}else{
echo "Input date is from the future";
}
答案 1 :(得分:1)
您只需使用strtotime()
:
if( strtotime($_POST['dateto']) >= strtotime(date('Y-m-d')) )
{
// Do what you're supposed to here.
}
else
{
echo "error";
}
答案 2 :(得分:0)
而不是
$str1 = date("d-m-Y");
$str2 = date("d-m-Y", strtotime($_POST['dateto']));
尝试
$str1 = time();
$str2 = strtotime($_POST['dateto']);
现在你必须unix时间戳来比较。这些将为您提供您期望的结果。
在字符串的第一部分的字符串上使用>=
将导致意外结果,因为01-01-2016
小于20-07-2015
,即使在日历上进行比较{{ 1}}比01-01-2016
之后('大于')。
另一种选择是将20-07-2015
更改为date("d-m-Y")
,这意味着可以使用date("Ymd")
评估日期。虽然时间戳在您的情况下似乎更简单。
答案 3 :(得分:0)
您可以将日期转换为时间,然后进行比较:
$str1 = time();
$str2 = strtotime($_POST['dateto']));
if ($str2 >= $str1) {
// doing what it is supposed to
}
else {
echo "error";
}
答案 4 :(得分:0)
试试这个,使用 createFromFormat
$format = "d-m-Y";
$date1 = DateTime::createFromFormat($format, date('d-m-y'));
$date2 = DateTime::createFromFormat($format, $_POST['dateto']);
if($date1 >= $date2){
// doing what it is supposed to
}
else {
echo "error";
}