$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
我的代码有什么问题?
答案 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中
您要比较的所有参数都应具有相同的格式