2013-01-21 97 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 –