2013-01-21 98 views
0

我拉着從MySQL數據庫格式爲01/20/13我呼籲這個值的PHP日期函數的日期返回值來獲得今天是什麼日子的一週,所以01/20/13是即星期日今天的日期,但它不斷的返回星期三的價值。我已經包括了下面的代碼,我是編程新手,所以這可能是我忽略的一個愚蠢的錯誤。PHP返回日期不正確

<?php 

     require '../TimeCard/DB.php'; 

    try{ 
    $stmt = $conn->prepare('SELECT `date` FROM `timeRecords` WHERE `employeeID`= 1 '); 
    $stmt->execute(); 
    } catch(PDOException $e){ 
     echo'ERROR: ' . $e->getMessage(); 
    } 

    while($row = $stmt->fetch()) 
    { 
    echo date("l", $row['date']) . "<br>"; 
    echo $row['date'] . "<br>"; 
    } 

     ?> 
+1

在我的MySQL應用我傾向於選擇存儲MySQL日期或UNIX時間戳,而不是人類可讀的日期,因爲MySQL日期非常容易操作k與SQL一起使用,UNIX時間戳在PHP中非常容易使用。 ...僅供將來參考。我覺得大多數開發者可能會同意。 – Ethan

回答

1

MySQL不存儲日期爲m/d/Y它將它們保存爲Y-M-d你的MySQL數據庫將變成 「13年1月20日」 爲0000-00-00。

但是,如果你不使用的日期類型,並存儲爲一個字符串中使用

strtotime($row['date']) 
1

使用的strtotime你的MySQL存儲日期,然後使用日期函數就可以了

$day = date('l',strtotime($row['date'])); 
1

strtotime()

echo date("l", strtotime($row['date'])) . "<br>"; 
1

嘗試的第二個參數PHP的date()函數是一個整數時間戳。你必須使用DateTime更好的運氣,比如

$dt = DateTime::createFromFormat('m/d/y', $row['date']); 
echo $dt->format('l'); 

這給你定製的日期解析器源格式相匹配,而不是依靠strtotime()它肯定有它的怪癖,例如與正向處理日期的好處斜槓(13年10月12日)爲美國(10月12日)與日期連字符(13年10月12日)爲歐盟(12月10日)

例在這裏 - http://codepad.viper-7.com/iVXxA1

+0

我有一個問題,我們是否可以讓任何庫使用這個類'DateTime'? –

+0

對不起,得到了答案。感謝http://php.net/manual/en/datetime.installation.php –