检查日期是否在特定日期PHP laravel之前

时间:2014-10-02 11:39:27

标签: php laravel laravel-4

我正在尝试检查某个日期是否在某个特定日期之前。如果是,我想输出有效的else输出Expired。这是我目前获得的代码,但所有条目都输出为有效,不应该发生。

首先我计算出即将到来的星期五的日期,在这种情况下是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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

别介意,我完全错误地做了。对于像我这样犯这个愚蠢错误的人,我想出来了。 If始终为真,因为所有$winner->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

我用这一行计算了之前的Wendsday:

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

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

我有兴趣看看其他更有经验的程序员可能会如何处理这个问题。我相信有更好的方法。