我在 php 中有一個代碼,用于處理一個人的個人詳細資訊。我需要代碼來處理日期輸入,以便當用戶輸入像1900 年及以下這樣的年份時,程式輸出這是不可能的。如果日期輸入是在未來,我已經成功地處理了程式應該如何回應。該程式以歐洲日期格式從用戶那里獲取日期輸入,例如21-10-1990,我很難處理這個,因為 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
}
}
uj5u.com熱心網友回復:
使用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";
}
uj5u.com熱心網友回復:
使用日期時間()
$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";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/395529.html
