Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么不是';t DateTime::是否按预期工作?_Php_Mysql_Datetime_Pdo - Fatal编程技术网

Php 为什么不是';t DateTime::是否按预期工作?

Php 为什么不是';t DateTime::是否按预期工作?,php,mysql,datetime,pdo,Php,Mysql,Datetime,Pdo,多亏了对这个问题的回答,我才能够从MySQL数据库中输出一个日期列表,这些日期将来(即今天之后)使用PHP。但是,如果我想让“今天”稍微往后退一点怎么办;换句话说,如果我希望某个日期不提前一周出现在日期列表中 我尝试使用以下代码使用DateTime::sub,但它会杀死我的脚本(我只是得到一个空白屏幕-如果我注释掉DateTime::sub行,它会再次工作。我仍然没有找到如何让PDO回显错误详细信息的方法): $dateToday=newdatetime('now'); $dateToday->

多亏了对这个问题的回答,我才能够从MySQL数据库中输出一个日期列表,这些日期将来(即今天之后)使用PHP。但是,如果我想让“今天”稍微往后退一点怎么办;换句话说,如果我希望某个日期不提前一周出现在日期列表中

我尝试使用以下代码使用
DateTime::sub
,但它会杀死我的脚本(我只是得到一个空白屏幕-如果我注释掉DateTime::sub行,它会再次工作。我仍然没有找到如何让PDO回显错误详细信息的方法):

$dateToday=newdatetime('now');
$dateToday->sub(新的日期间隔('P7D');
做{
$dateCompare=newdatetime($row['date']);
如果($dateCompare>$dateToday){
回显“”.$dateCompare->format('Y-m-d')。

”; }否则{ 回显“假”

; } }而($row=$stmt->fetch(PDO::fetch_ASSOC));

有什么想法吗?

您的代码对我来说很好,我想这行代码有问题:

$dateCompare = new DateTime($row['date']);
美元行的日期是什么格式

我建议使用

$date = DateTime::createFromFormat('The format your dates are in', $row['date']);
有关可能的日期格式,请参阅

e、 g.Y-m-d将解析2012-10-28


如果您有一个旧版本的PHP,您可以通过比较字符串来尝试这种“低技术”解决方案

// Assuming your mysql is Y-m-d
$dateToday = date('Y-m-d')

do{
    if ($row['date'] > $dateToday){
        echo '<p>'.$dateCompare -> format('Y-m-d').'</p>';
    } else {  
        echo '<p>FALSE</p>';
    }
while...
//假设您的mysql是Y-m-d
$dateToday=日期('Y-m-d')
做{
如果($row['date']>$dateToday){
回显“”.$dateCompare->format('Y-m-d')。

”; }否则{ 回显“假”

; } 虽然
@PezCuckow:这是DateIntervalSee的一种可能性构造方法:“格式以字母P开头,表示“period”。每个持续时间段由一个整数值和一个句点指示符表示。”$date变量在我的MySQL数据库中是日期格式的,Y-m-d。如果我注释掉
sub
行,它工作得很好。
DateTime::createFromFormat('Y-m-d')
会工作得很好!你有什么PHP版本?sub只受支持
(PHP5>=5.3.0)
啊哈!它是5.2。重新配置的MAMP使用5.5,它正在工作。谢谢。
// Assuming your mysql is Y-m-d
$dateToday = date('Y-m-d')

do{
    if ($row['date'] > $dateToday){
        echo '<p>'.$dateCompare -> format('Y-m-d').'</p>';
    } else {  
        echo '<p>FALSE</p>';
    }
while...