比较日期不起作用

时间:2010-09-27 13:03:10

标签: php

喂,

我正在比较2个日期。很明显$ db_minus7更大,因此$ can_invoiced的值应为'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;

?>

请帮助

4 个答案:

答案 0 :(得分:5)

为什么不直接比较像这样再次形成它们的时间:

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

修改

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

答案 1 :(得分:2)

不要'"m-d-Y"使用"Y-m-d"

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

答案 2 :(得分:1)

将日期比较为时间戳,而不是字符串:

if(strtotime($db_minus7) > strtotime($completion_date)) { 

如果你必须将日期作为字符串进行比较,那么使用Y-m-d而不是m-d-y

答案 3 :(得分:0)

永远不要将日期作为字符串进行比较,即使它适用于你的测试用语,它迟早会落在你的脚上......或者可能......理查德档手将会追捕你,我不知道......

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