Php 比较不起作用的日期

Php 比较不起作用的日期,php,Php,你好 我在比较两次约会。很明显,$db_minus 7更大,因此$can_发票的价值应该是'maybe',但它是'Yes'。当我执行的时候 <?php $db_minus7 = '2010-07-05 09:45:29.420'; $completion_date = '30.07.2009'; if(date("m-d-Y",strtotime($db_minus7)) > date("m-d-Y",strtotime($completion_date))) { $can

你好

我在比较两次约会。很明显,$db_minus 7更大,因此$can_发票的价值应该是'maybe',但它是'Yes'。当我执行的时候

<?php

$db_minus7 = '2010-07-05 09:45:29.420';
$completion_date = '30.07.2009';
if(date("m-d-Y",strtotime($db_minus7)) > date("m-d-Y",strtotime($completion_date))) {
    $can_invoiced = 'maybe';
} else {
    $can_invoiced = 'Yes';
}

echo $can_invoiced;

?>


请帮助

将日期作为日期戳而不是字符串进行比较:

if(strtotime($db_minus7) > strtotime($completion_date)) { 
如果必须将日期作为字符串进行比较,则使用Y-m-d而不是m-d-Y

不要使用
“m-d-Y”
而是
“Y-m-d”


01-01-2010
低于
02-01-2009
不好!),但
2010-01-01
不低于
2009-01-02
好!

你为什么不这样比较一下重新格式化它们的时间:

if(strtotime($db_minus7) > strtotime($completion_date)) {
    $can_invoiced = 'maybe';
} else {
    $can_invoiced = 'Yes';
}
编辑:


如果您想使用date(),请使用
“Ymd”
“Y-m-d”
作为模式,因为它是字符串比较,这是使用的逻辑顺序(将模式从“大”(年)排列到小(天…或秒,如果需要)

永远不要将日期作为字符串进行比较,即使它适用于您的测试用例,它迟早会落到您的脚上。。。或者也许。。。richard stallman会找到你的,我不知道

if(strtotime($db_minus7) > strtotime($completion_date)) {
    $can_invoiced = 'maybe';
} else {
    $can_invoiced = 'Yes';
}

谢谢我不熟悉sql,所以我会问如果我使用if(date(“m-d-Y”),strotime($db_minus7)),会有什么问题。转换成正确的日期格式,然后比较..为什么结果是肯定的?@user453893-这里你没有使用sql,你使用的是PHP和PHP date()函数将日期转换为人类可读的字符串…然后您将比较字符串,而不是它们所代表的日期。现在我明白了。我的印象是日期函数将返回格式为m.d.Y的日期。现在我已经检查了它…感谢详细的解释。如果可以的话,我会投票给您。谢谢您的所有答案!!