这真让我疯狂,所以请帮忙。
我有如下所示的代码,它会显示接下来7天的日期列表。
我想要代码实现的东西。
以下代码达到了这一要求
<?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>";}
?>
答案 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");
即可得到它,因为日期的第二个参数默认为当前时间。