如何用php处理疯狂的日期输入



我有一个php代码,用于处理一个人的个人详细信息。我需要处理日期输入的代码,这样当用户输入一个年份(如1900及以下(时,程序就会输出这是不可能的。如果日期输入在未来,我已经成功地处理了程序应该如何响应。该程序以欧洲日期格式接收用户的日期输入,例如21-10-1990Am很难处理这一点,因为php内置函数time((返回自1970年1月1日以来测量的unix时间戳。有没有一种方法可以绕过这一点,在不直接对年份应用条件结构的情况下,实现对1900年及以下年份的检测?

代码

<?php 
class User{
//initialize the user properties
public string $name="";
public string $dob="";
public string $national_id="";
public string $tel="";
public string $email="";
public function User($user_name,$dob,$national_id,$tel,$mail){
//assign the values inside the constructor
$this->name=$user_name;
$this->dob=$dob;
$this->national_id=$national_id;
$this->tel=$tel;
$this->email=$mail;
}
function validate_dob(){


//get a new time in millis from the date passed in

$date_obj=strtotime($this->dob);
//add conditional structures to make sure the date is not in the 
//future and is within acceptable time range
//get the current time from the unix timestamp
$current_time=time();
if($date_obj>$current_time){
echo "n";
echo "That is impossible, you birth date cannot be in the future";
}
//if the date is also 1900 and below then also throw an error, i need help here
}
}

使用DateTime而不是time()strtotime()

$date_obj = DateTime::createFromFormat('d-m-Y',$this->dob);
$current_time = new DateTime('NOW');
$date1900 = DateTime::createFromFormat('d-m-Y','01-01-1900');
if($date_obj > $current_time){
echo "n";
echo "That is impossible, your birth date cannot be in the future";
}else
if($date_obj < $date1900){
echo "n";
echo "That is impossible, your birth date cannot before the year 1900";
}

使用DateTime((

$date1   =   date('d-m-Y',strtotime($this->dob));
$date2   =   date('d-m-Y',strtotime(time());
$d1 = new DateTime($date1);
$d2 = new DateTime($date2); 
if($date1 >$date2 ){
echo "n";
echo "That is impossible, you birth date cannot be in the future";
}

最新更新