2011-01-08 94 views
1

這真的讓我發瘋,所以請大家幫忙。用PHP選擇當前日期

我有如下所示的代碼,它顯示了未來7天的日期列表。

我希望代碼實現的東西。

  1. 顯示「今天和‘明天’,而不是相應的日期。
  2. 一旦日期被選擇的添加‘當前’級,以此方式,突出顯示不同的顏色。
  3. ‘今日’應默認選擇第一次加載頁面時。

下面的代碼實現這一要求

<?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的日期格式化

由於這是我的第三個要求,所以默認情況下選擇的「Today」不再適用。

<?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

你的問題是什麼?你卡在哪裏? – 2011-01-08 23:47:38

+0

什麼是$ _GET ['date']`填充? – webbiedave 2011-01-09 00:10:05

回答

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");就可以得到它,因爲日期的第二個參數默認爲當前時間。

相關問題