Php 比较不起作用的日期
你好 我在比较两次约会。很明显,$db_minus 7更大,因此$can_发票的价值应该是'maybe',但它是'Yes'。当我执行的时候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
<?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的日期。现在我已经检查了它…感谢详细的解释。如果可以的话,我会投票给您。谢谢您的所有答案!!