喂,
我正在比较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;
?>
请帮助
答案 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';
}