Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CheckDate函数在无效时添加一个月_Php_Validation_Date_If Statement - Fatal编程技术网

Php CheckDate函数在无效时添加一个月

Php CheckDate函数在无效时添加一个月,php,validation,date,if-statement,Php,Validation,Date,If Statement,我从日期开始确定一周中的哪一天。我添加了一个数组来打印实际月份,而不是月份的数字。它可以在正确的日期正常工作。但是,当我查找无效日期时,checkdate函数起作用,但当显示无效日期时,它会将月份上移一个月。我知道它和monthName有关,因为当我将它作为月份号($month)保留时,它工作正常。你知道为什么吗 <?Php error_reporting(E_ALL ^ E_NOTICE); $todo=$_POST['todo']; if(isset($todo) and $todo

我从日期开始确定一周中的哪一天。我添加了一个数组来打印实际月份,而不是月份的数字。它可以在正确的日期正常工作。但是,当我查找无效日期时,checkdate函数起作用,但当显示无效日期时,它会将月份上移一个月。我知道它和monthName有关,因为当我将它作为月份号($month)保留时,它工作正常。你知道为什么吗

<?Php
error_reporting(E_ALL ^ E_NOTICE);
$todo=$_POST['todo'];

if(isset($todo) and $todo=="submit")
    {
      $month=$_POST['month'];
      $dt=$_POST['dt'];
      $year=$_POST['year'];
      $timestamp = mktime(0, 0, 0, "$month", "$dt", "$year");
      $monthName = date("F", $timestamp);

        if (checkdate($month, $dt, $year)) 
            {
            "<br>";
            echo "$monthName $dt, $year was (or will be) on a " . \date("l", mktime(0, 0, 0, "$month", "$dt", "$year")) . "<br>";
            } 

        else 
            {
            echo $error = "The date $monthName $dt, $year is invalid";
            }
      }
?>

<h2>Enter a Date and I'll Tell You the Day of the Week</h2>

<form method=post name=f1 action=''><input type=hidden name='todo' value="submit">
<table border="0" cellspacing="0" >
<tr><td  align=left>   
Month <select name=month value=''>Select Month</option>
<option value='01'>January</option>
<option value='02'>February</option>
<option value='03'>March</option>
<option value='04'>April</option>
<option value='05'>May</option>...

输入日期,我将告诉您一周中的哪一天
月份选择月份
一月
二月
前进
四月
也许

如果传递的日期无效,那么我猜mktime会根据传递的无效日期生成$month+1的时间戳。2月30日将改为3月1日

就我个人而言,我会抛弃mktime并利用它。比如:-

$month=2;
$dt=30;
$year=2014;

if(!checkdate($month, $dt, $year)){
    echo "$dt " . \DateTime::createFromFormat('m', $month)->format('F') . " $year is not a valid date";
} else {
    $date = \DateTime::createFromFormat('d m Y', "$dt $month $year");
    echo $date->format('jS F Y') . " will be a " . $date->format('l');
}

我想我可以在else语句中重新定义$monthName。但是还有其他的解决办法吗?