我正在尝试检查某个日期是否在某个特定日期之前。如果是,我想输出有效的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
答案 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
并且问题已解决。
我有兴趣看看其他更有经验的程序员可能会如何处理这个问题。我相信有更好的方法。