php日期比较

时间:2019-04-25 08:29:04

标签: php date

$month = [
   "January",
   "February",
   "March",
   "April",
   "May",
   "June",
   "July",
   "August",
   "September",
   "October",
   "November",
   "December"
];

$month = $_POST['month'];
$year = $_POST['year'];
$day = $_POST['day'];
$dateOfDoc = "$year/$month/$day";
$date_now = date("Y/m/d");

if($dateOfDoc >= $date_now){
    echo"yes u can upload";
} else {
    echo "no u can't upload";
}

我正在尝试将今天和用户输入日期进行比较,如果用户输入日期应大于今天,我应该允许用户使用,但是即使用户输入明天的日期,我也总是会得到错误的信息 例子)

today : 2019 04 25
user date : 2019 04 05 return false

today : 2019 04 25
user date : 2019 12 05 return true

我的代码有什么问题?

3 个答案:

答案 0 :(得分:2)

您正在误用带分隔符/的日期格式

$month = $_POST['month'];
$year = $_POST['year'];
$day = $_POST['day'];
$dateOfDoc = "$month/$day/$year";
$date_now = date("m/d/Y");

if($dateOfDoc >= $date_now){
    echo"yes u can upload";
} else {
    echo "no u can't upload";
}
  

注意:通过查找,可以消除m / d / y或d-m-y格式的日期的歧义   位于各个组件之间的分隔符:如果分隔符是一个   斜线(/),则假定为美国m / d / y;而如果   分隔符是破折号(-)或点(。),然后是欧洲d-m-y格式   假定为。但是,如果年份以两位数格式给出,并且   分隔符是破折号(-,日期字符串被解析为y-m-d。

来源link

Demo

答案 1 :(得分:1)

尝试以下代码:

$current_date = date('d/m/y');
$post_date = date("d/m/y", mktime(0, 0, 0, $_POST['day'], $_POST['month'], $_POST['year']));

if (strtotime($post_date) >= strtotime($current_date)) {
 echo 'Upload';
} else {
 echo 'Do not upload';
}

答案 2 :(得分:0)

您正在将文本字符串与数字进行比较!

如果$ name包含月份名称,则不能将其与php中的date(“ m”)进行比较,因为php中的date(“ m”)返回月份的数字,但是您将月份的名称存储在变量$ name中

您要比较的所有参数都应具有相同的格式