2014-02-11 109 views
2

我使用一個變量從數據庫中獲取日期,然後我通過該變量傳遞給strtotime函數來獲得所需的格式,但它總是返回錯誤的日期。也許有一個傳遞變量的時間函數的問題。請告訴我們,我應該如何以正確的格式得到正確的日期。strtotime()在PHP返回總是01-01-1970

這裏就是我試圖做

$date = $fetch_user['date']; 
$newDate = date("d-m-Y", strtotime($date)); 
$day = date('l', strtotime($newDate)); 

echo $newDate; 
echo "-----"; 
echo $day; 
exit; 
+0

你是什麼$ fetch_user [ '日期'] –

+0

的PHP版本,你usiing? – krishna

+0

你可以發佈$ date的價值嗎? –

回答

2

1970年1月1日,是所謂的Unix紀元。這是他們開始計算Unix時間的日期。如果將此日期作爲返回值,通常意味着將日期轉換爲Unix時間戳返回(接近)零結果。所以日期轉換不成功。很可能是因爲它收到錯誤的輸入。

換句話說,您的strtotime($date)返回0,這意味着$ date以strtotime函數的不受支持的格式傳遞。

所以你必須檢查自己$date,在打電話strtotime。

+0

$ date返回一個1970年1月1日以外的有效日期,但它仍然是它的不工作。當我使用日期作爲一個字符串,其工作正常。 – HimanshuSamantaray

0

01-01-1970表示您可能因strtotime()而得到0。您可能正在使用這種功能無法理解的格式。 PHP的文檔指出:

函數需要接受一個包含英語日期 格式的字符串,並會嘗試解析格式爲Unix時間戳(自1月1日 秒數1970年00:00: 00 UTC),相對於現在給出的 時間戳,或者當前時間(如果現在沒有提供)。

所以它不是很靈活。您可能想嘗試使用DateTime::createFromFormat。看看它的documentation

基本上,你必須指定日期字符串的格式,也作爲輸入。這樣你可以使用任何你想要的日期格式。從php.net

例子:

<?php 
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');