用PHP选择当前日期

时间:2011-01-08 23:36:38

标签: php date

这真让我疯狂,所以请帮忙。

我有如下所示的代码,它会显示接下来7天的日期列表。

我想要代码实现的东西。

  1. 显示“今天和明天”而不是相应的日期。
  2. 选择日期后,添加“当前”类,这样就会以不同的颜色突出显示。
  3. 首次加载页面时,默认情况下应选择“今天”。
  4. 以下代码达到了这一要求

    <?php
    
    $today = date("d-m-Y", strtotime('today')); 
    $tomorrow = date("d-m-Y", strtotime('tomorrow')); 
    
    echo '
    <li><a href="?date='.$today.'">'.(($_GET['date'] == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 
    
    echo '
    <li><a href="?date='.$tomorrow.'">'.(($_GET['date'] == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 
    
    for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("d-m-Y", $time);
    
    echo '
    <li><a href="?date='.$date.'">'.(($_GET['date'] == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($_GET['date']) && $_GET['date'] == $date) ? '</span>' : '') . "</a></li>";}
    
    ?>
    

    然而,最近我需要将日期格式从d-m-Y更改为Y-m-d

    由于这是我的第三个要求,默认情况下选择的“今天”不再有效。

    <?php
    
    $today = date("Y-m-d", strtotime('today')); 
    $tomorrow = date("Y-m-d", strtotime('tomorrow')); 
    
    echo '
    <li><a href="?date='.$today.'">'.(($_GET['date'] == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 
    
    echo '
    <li><a href="?date='.$tomorrow.'">'.(($_GET['date'] == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 
    
    for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("Y-m-d", $time);
    
    echo '
    <li><a href="?date='.$date.'">'.(($_GET['date'] == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($_GET['date']) && $_GET['date'] == $date) ? '</span>' : '') . "</a></li>";}
    
    ?>
    

    有人可以帮忙解决这个问题。

    提前致谢

    我现在有了这个

    但我担心它不会在页面加载时添加类。 所以“今天”默认不突出显示。

    我搞砸了什么?

    <?php
    
    if(isset($_GET['date'])){
    
    $gdate = $_GET['date'];
    }
    
    else{
    
    $gdate = date("Y-m-d", strtotime('today')); //Or whatever arbitrary date you want.
    
    }
    $today = date("Y-m-d", strtotime('today')); 
    $tomorrow = date("Y-m-d", strtotime('tomorrow')); 
    
    echo '
    <li><a href="?date='.$today.'">'.(($gdate == $today) ? '<span class="current"' . '>Today</span>' : 'Today').'</a></li>'; 
    
    echo '
    <li><a href="?date='.$tomorrow.'">'.(($gdate == $tomorrow) ? '<span class="current"' . '>Tomorrow</span>' : 'Tomorrow').'</a></li>'; 
    
    for ($time = strtotime('+2 days'), $i=0; $i < 5; $time = strtotime('+1 days', $time), $i++) {$date = date("Y-m-d", $time);
    
    echo '
    <li><a href="?date='.$date.'">'.(($gdate == $date) ? '<span class="current">' : '') . date("D jS", $time) . ((isset($gdate) && $gdate == $date) ? '</span>' : '') . "</a></li>";}
    
    ?>
    

1 个答案:

答案 0 :(得分:1)

好的,问题是$ _GET ['date']没有被设置,对吧?

你要做的就是不要在逻辑中使用$ _GET ['date']。做这样的事情:

if(isset($_GET['date']))
{
    $gdate = $_GET['date'];
}else{
    $gdate = date("Y-m-d", strtotime('today')); //Or whatever arbitrary date you want.
}

然后在逻辑中使用$ gdate。这样,如果设置了$ _GET ['date'],它将使用它,否则它将使用今天的日期。顺便说一句,你不必使用strtotime来获取今天的日期,只需date("Y-m-d");即可得到它,因为日期的第二个参数默认为当前时间。