【问题标题】:Error in comparison in php, to solve question with datesphp中比较错误,用日期解决问题
【发布时间】:2018-10-16 21:01:36
【问题描述】:

我正在尝试使用 php 和 mysql 做一个合同管理应用程序,但我对日期有一些疑问。

我需要知道今天和合同中特定日期之间的时间,或者如果不到一个月,它应该显示剩余天数..

问题是比较知道合同结束是在过去还是将来,似乎没有用!

验证码链接:link to project

$hoje = date_create();
$fim = '2022-11-11';
$fim_data = date_create($fim);
$diff   = date_diff( $hoje, $fim_data );
$meses =  (($diff->format('%y')*12)+$diff->format('%m'));
$dias = $diff->days;
var_dump($fim < $hoje);

if($fim < $hoje) {
    $result = "Contract has ended";
} elseif($meses >=1 ) {
    $result = $meses . " months";
    echo '<br>';
} else {
    $result =  $dias . " days";
};
echo '<br>';
echo $result;

【问题讨论】:

  • 现在你不想要/不期望的行为是什么?
  • $fim 日期是将来的日期,它大于 $hoje(葡萄牙语中的今天),但 var_dump 输出的是 true 而不是 false...
  • 如果您希望这种比较起作用,您需要将两个日期都转换为时间戳
  • @IdontDownVote - 我同意,我只是添加月数取决于哪些月,因为并非所有月都是平等的。
  • @IdontDownVote 它实际上正在工作(当两者都是 DateTime 对象时)通过简单的比较(),因为 datetime 已经实现了运算符!

标签: php date comparison diff


【解决方案1】:

您正在将字符串与日期对象进行比较

替换

if($fim < $hoje) {

if($fim_data < $hoje) {

【讨论】:

    【解决方案2】:

    Felippe Duarte 的解决方案更正了代码

     $hoje = date_create();
    $fim = '2018-11-11';
    $fim_data = date_create($fim);
    
    
    $diff   = date_diff( $hoje, $fim_data );
    
    
    
    $meses =  (($diff->format('%y')*12)+$diff->format('%m'));
    $dias = $diff->days;
    
    
    var_dump($fim_data < $hoje);
    
    if($fim_data < $hoje){$result = "não aplicavel";}
    elseif($meses >=1 ){
    $result = $meses . " meses";
    echo '<br>';}
    else{
    $result =  $dias . " dias";};
    echo '<br>';
    echo $result;
    

    【讨论】:

    • 除了复制 Felippes 的答案之外,这个答案是否添加了任何新内容?
    • 它为可能需要它的任何人显示更正后的代码。
    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    相关资源
    最近更新 更多