2013-06-24 179 views
0

我有我的日期格式的問題,這是從SQL數據庫獲取的值並傳遞給用戶的窗體,並在用戶將其設置回存儲到數據庫格式不同時返回的值。格式日期輸出差異PHP

$sql = mysql_query("SELECT * FROM $memberTable WHERE id='11' LIMIT 1"); //checking from SQL 
$sqlcheck = mysql_fetch_assoc($sql); //Pass each value 

$dob = strftime("%Y-%B-%d", strtotime($sqlcheck['dob'])); 
//format from databases 2000-10-30 into 2000-October-30 

$dob = explode("-", $dob); 
// break into day,month,year for form to fill in 

$dob = $dob[0].'-'.$dob[1].'-'.$dob[2]; 
// after user fill in combine together for user to input back to databases 

$dob = strftime("%Y-%m-%d", strtotime($dob)); 
//formatting back into databases format, 2000-October-30 into 2000-10-30 
//The main problem here is the output is "2000-10-02" 

我想知道爲什麼日值變成了02而不是30? 是我用的格式代碼有問題嗎? 請幫助。

+0

僅僅因爲你可以建立'strftime'的格式並不意味着'strtotime'能理解它。 – Gumbo

+0

將2000-10-30轉換爲2000年10月30日之後,可以使用strftime(「%Y-%m-%d」,strtotime($ dob));.問題在這裏。對。建議不要轉換爲2000年10月30日。然後,直接使用strftime();將顯示正確的結果。 –

回答

1

@你只是沒有讓寫的日期格式爲strtotime()功能,你可以這樣做的權利一樣這個: -

$date='2000-October-30'; 
$dob = explode("-", $date); 
$dob = $dob[2].'-'.$dob[1].'-'.$dob[0]; 
echo $dob = strftime("%Y-%m-%d", strtotime($dob)); 

你可以檢查php日期和時間格式here

+0

Thx爲您的答案,我現在知道我的問題。 –

+0

@DiazLv您好! –

3

嘗試date功能像

echo $dob = date("Y-m-d", strtotime($dob)); 

,更好地使用像(可選)

$dob = strtotime("Y-B-d", strtotime($sqlcheck['dob'])); 
//format from databases 2000-10-30 into 2000-October-30 

$dob = explode("-", $dob); 
// break into day,month,year for form to fill in 

$dateofbirth = $dob[0].'-'.$dob[1].'-'.$dob[2]; 
echo date("Y-m-d", strtotime($dateofbirth)); 
0

的的strtotime方法正確地計算日期格式是否爲「2013-Oct-30」 但是當日期的格式爲「2013-October-30

當你正在構建的日期重新走到一起只是沒有計算它在本月做一個子字符串以獲取本月的前三個字符,並且應該解決您的問題。

$dob = $dob[0].'-'. substr($dob[1], 0, 3) .'-'.$dob[2]; 

//用戶填寫後,在共同爲用戶返回相結合,輸入到數據庫