2013-06-03 95 views
0

我遇到了一些PHP日期函數的麻煩(我幾乎沒有什麼知識)。php日期的問題

我想本週接下來5天保存3個參數變量一樣,如$month$dayofmonth$dayofweek,並讓它顯示6月4日週二,日期的每個部分都可以其coresponding裏面放html div元素。

我已經使用不同的代碼進行了過去兩天的實驗,但沒有任何工作,3小時前我得出結論,我得到的月份的方式,我會在月底發生衝突,因爲名稱改變。所以我會有5月31日星期五,5月1日星期六,5月2日星期日等

我現在有什麼,我想我已經糾正了月底的問題。

$month = date("F"); 
$day_1 = date("j"); 
$day_2 = date("j", strtotime("+1 days")); 
$day_3 = date("j", strtotime("+2 days")); 
$day_4 = date("j", strtotime("+3 days")); 
$day_5 = date("j", strtotime("+4 days")); 
$wday_1 = date("l"); 
$wday_2 = date("l", strtotime("+1 weekday")); 
$wday_3 = date("l", strtotime("+1 weekday")); 
$wday_4 = date("l", strtotime("+1 weekday")); 
$wday_5 = date("l", strtotime("+1 weekday")); 
$next_month = date("F", strtotime("+1 month")); 
echo $day_1." ".$wday_1." "; 
if($day_1 == 28 || $day_1 == 29 || $day_1 == 30 || $day_1 == 31 || $day_2 == 28 || $day_2 == 29 || $day_2 == 30 || $day_2 == 31 || 
$day_3 == 28 || $day_3 == 29 || $day_3 == 30 || $day_3 == 31 || $day_4 == 28 || $day_4 == 29 || $day_4 == 30 || $day_4 == 31 || 
$day_5 == 28 || $day_5 == 29 || $day_5 == 30 || $day_5 == 31) { $month = $next_month; } 
echo $month; 

我看了一下日期的文件,但我需要能夠在本地化的變化很容易地使用和SQL選擇在不同的變量之日起的每一個部分。

+4

您需要向我們展示您的代碼。有一個非常簡單的方法可以完成你所描述的內容,只要你能更具體地說明那是什麼以及你已經嘗試了什麼。 – Leng

+0

在這一刻,我沒有更多的代碼,我已經從頭開始,我會發布,當我做了一些事情,往往有點如何應該。 〜20/30分鐘 –

+0

您是否嘗試過使用'strtotime('+ 1天');',將1改爲任何您需要的數量? – BLaZuRE

回答

-1

如下附加一個簡單的程序,打印出的2013的所有天你想要的格式,天,月,周通過的div分開..

我勸你看到date format瞭解許多方法可以打印formmated日期。

<?php 

$inicio = new DateTime(); 
$inicio->setDate(2013, 1, 1); 


$fim = new DateTime(); 
$fim->setDate(2014, 1, 1); 

while($inicio < $fim) 
{ 


    echo "<div>"; 
    echo $inicio->format("M"); 
    echo "</div>"; 

    echo "<div>"; 
    echo $inicio->format("j"); 
    echo "</div>"; 

    echo "<div>"; 
    echo $inicio->format("l"); 
    echo "</div>"; 

    echo "<br>"; 

    $inicio->add(new DateInterval('P1D')); // sums 1 day in date 

} 


?> 
+1

謝謝你,你的代碼我決定改變主代碼,並把它變成一個側面滾動類型的日曆,其中的所有內容,我會使它前進到JavaScript的當前日期。 –

0

使用DateTime對象而不僅僅是date()函數。如果我理解正確的話,你想要什麼,你可以這樣做:

$date = new DateTime(); 
for ($i = 0; $i < 5; ++$i) { 
    echo $date->format('F j l'); // Month, day of month, day of week 
    $date->modify('+1 day'); // this will change the timestamp stored in 
          // the DateTime object accordingly. 
} 
1

的一種方法是使用一個DatePeriod; DatePeriod的實例是可迭代的,所以你可以在foreach循環中使用它們。

// a date period starting today spanning 5 days and separated into 1 day segments 
$period = new \DatePeriod(new \DateTime(), new \DateInterval('P1D'), 4); 
foreach ($period as $day) { 
    echo $day->format('F j l'); 
} 

可能有點大材小用爲你想要做什麼,但往往DatePeriods會被忽視這是不幸的,因爲他們可以非常方便的。