【问题标题】:Check if date is before a certain date PHP laravel检查日期是否在某个日期之前 PHP laravel
【发布时间】:2014-10-02 19:49:56
【问题描述】:

我正在尝试检查某个日期是否早于某个日期。如果是我想输出有效,否则输出过期。这是我目前得到的代码,但所有条目都被输出为 Valid 这不应该发生。

首先我计算出即将到来的星期五的日期,在这种情况下是 2014-10-03,但我希望它是午夜,所以 2014-10-04 00:00:00。

<?php 
    $lastWed = date('Y-m-d', strtotime('last Wednesday', strtotime('tomorrow')));
    $lastWed = date('Y-m-d H:i:s', strtotime($lastWed.' 11:00:00')); //2014-10-01 11:00:00
    $fri = date('Y-m-d H:i:s', strtotime('+61 hours', strtotime($lastWed)));  //2014-10-04 00:00:00
   //Valid 2014-10-01    //Expired 2014-09-25
?>

然后我使用$fri 变量来查看条目是否有效。但是它不起作用。有什么想法吗?

@if(date('Y-m-d H:i:s', strtotime($winner->created_at)) <= $fri)
    Valid until <?= $fri ?>
@else
    Expired
@endif

【问题讨论】:

  • $fri设置为strtotime('+61 hours', strtotime($lastWed)),然后将其与strtotime($winner-&gt;created_at)比较,您将比较整数而不是文本,而不是打印date('Y-m-d H:i:s',$fri)

标签: php laravel laravel-4


【解决方案1】:

我会这样做:

$lastWed = date('Y-m-d', strtotime('last Wednesday', strtotime('tomorrow')));
$lastWed = date('Y-m-d H:i:s', strtotime($lastWed.' 11:00:00')); //2014-10-01 11:00:00
$fri = strtotime('+61 hours', strtotime($lastWed));  

在刀片中:

@if(strtotime($winner->created_at) <= $fri)
    Valid until {{ $fri }}
@else
    Expired
@endif

【讨论】:

    【解决方案2】:

    别介意伙计们,我做的完全不正确。对于像我这样犯愚蠢错误的人,我想通了。 If 总是正确的,因为所有的 $winner-&gt;created_at 实际上是在 2014 年 10 月 3 日星期五之前。

    我向If 添加了一个附加条件,以确保它们位于特定日期范围之间。

    $lastWed = date('Y-m-d', strtotime('last Wednesday', strtotime('tomorrow')));
    $lastWed = date('Y-m-d H:i:s', strtotime($lastWed.' 11:00:00')); //2014-10-01 11:00:00
    $fri = date('Y-m-d H:i:s', strtotime('+61 hours', strtotime($lastWed))); //2014-10-04 00:00:00
    $prevWed = date('Y-m-d H:i:s', strtotime('-1 days', strtotime($lastWed)));
                                    ?>
    @if($winner->created_at <= $fri && $winner->created_at >= $prevWed)
        Valid until <?= $fri ?>
    @else
        Expired
    @endif
    

    我用这条线计算了上一个星期三:

    $prevWed = date('Y-m-d H:i:s', strtotime('-1 days', strtotime($lastWed)));
    

    并检查以确保日期小于或等于$fri 并且大于或等于$lastWed 并且问题已解决。

    我很想看看其他更有经验的程序员如何处理这个问题。我确信有更好的方法。

    【讨论】:

    • 我已经添加了我的答案。但还有一件事。您不应该将 PHP 与 Blade 模板混合使用。您不应该使用&lt;?= $fri ?&gt; 您应该将此变量设置为查看并使用{{ $fri }},正如我在回答中所展示的那样
    • 那么你的意思是我应该在将变量传递给视图之前在控制器中设置变量,然后使用 Blade 输出?我只是 Laravel 的新手,所以尽可能多地学习
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    相关资源
    最近更新 更多