我需要在下一年的所有星期一填寫表單上的下拉列表,並顯示所有星期一的日期。PHP/MySQL - 顯示當年所有星期一的日期列表
這樣做的最好方法是什麼?用MySQL表填充日期,還是有一種更智能的方法來生成這些日期而不需要MySQL?
所需的輸出會是這樣的:
所選擇的選項也只是日起,所以對於圖像中的第一個選項,11 Mar 13
將是價值的價值。
感謝您的幫助和道歉,如果這是一個愚蠢的問題。
我需要在下一年的所有星期一填寫表單上的下拉列表,並顯示所有星期一的日期。PHP/MySQL - 顯示當年所有星期一的日期列表
這樣做的最好方法是什麼?用MySQL表填充日期,還是有一種更智能的方法來生成這些日期而不需要MySQL?
所需的輸出會是這樣的:
所選擇的選項也只是日起,所以對於圖像中的第一個選項,11 Mar 13
將是價值的價值。
感謝您的幫助和道歉,如果這是一個愚蠢的問題。
編輯:修改,可支持在開始日期傳球而不是簡單的一年
function getDays($year, $startMonth=1, $startDay=1, $dayOfWeek='monday') {
$start = new DateTime(
sprintf('%04d-%02d-%02d', $year, $startMonth, $startDay)
);
$start->modify($dayOfWeek);
$end = new DateTime(
sprintf('%04d-12-31', $year)
);
$end->modify('+1 day');
$interval = new DateInterval('P1W');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
echo $dt->format("d/m/Y") . '<br />';
}
}
getDays(2013, 3, 12, 'monday');
輸出作爲一個下拉的格式應該是一個簡單的鍛鍊
您可以簡單地使用PHP
,然後使用DateTime::add方法。然後你可以採取一年的第一個星期一,並使用該方法增加7天52次。那會給你所有的星期一。如果您添加6天,您將獲得截止日期。
這段代碼將輸出你想
for($i = 0; $i <= 365; $i ++){
$startdate = strtotime("today + $i day");
$enddate = strtotime("today + " . ($i + 6) . " day");
if(date('D', $startdate) == 'Mon'){
echo date('d M y', $startdate) . " to " . date('d M y', $enddate) . "\n";
}
}
爲了這個顯示爲下拉列表中日期的列表,你需要的HTML代碼添加到像這樣
<select id="date" name="date">
<?
for($i = 0; $i <= 365; $i ++){
$startdate = strtotime("today + $i day");
$enddate = strtotime("today + " . ($i + 6) . " day");
if(date('D', $startdate) == 'Mon'){
echo '<option value="' . date('d-m-Y', $startdate) . '">' .date('d M y', $startdate) . " to " . date('d M y', $enddate) . "</option>";
}
}
?>
</select>
我有給定value
選擇選項星期一的日期在dd-mm-yyyy
格式,所以當處理表單一旦提交你將有星期一被選中。 因此,如果您要選擇行27 May 13 to 02 Jun 13
並提交表單,則表單另一端的php文件將具有變量$_POST['date']
,其值將爲27-05-2013
。
雖然人的幫助,以幫助它有禮貌地先嚐試自己的事情。你試過什麼樣的解決方案,你有什麼問題。這也可以阻止人們回答你可能犯的同樣的錯誤,或者在回答你的問題時企圖丟棄。 – Ben 2013-03-12 11:16:26
http://stackoverflow.com/questions/2045736/getting-all-dates-for-mondays-and-tuesdays-for-the-next-year可能的重複? – 2013-03-12 11:16:40
最好的辦法是在php中完成,而不是使用數據庫。我不知道你會怎麼想把日期放到數據庫中。 – Popnoodles 2013-03-12 11:17:08