我在php中有一个日历,显示给定月份的月份视图。在表格中,星期从星期日开始,到星期六结束。基本上,如果一周结束,它将添加一个新的表行。 我希望它从星期一开始,从星期几开始,到星期日结束。 这是我的代码。 2020年3月的日历会在此链接中显示。 Current Result Image
// Create array containing abbreviations of days of week.
$daysOfWeek = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
// What is the first day of the month in question?
$firstDayOfMonth = mktime(0,0,0,$month,1,$year);
// How many days does this month contain?
$numberDays = date('t',$firstDayOfMonth);
// Retrieve some information about the first day of the
// month in question.
$dateComponents = getdate($firstDayOfMonth);
// What is the name of the month in question?
$monthName = $dateComponents['month'];
// What is the index value (0-6) of the first day of the
// month in question.
$dayOfWeek = $dateComponents['wday'];
// Create the table tag opener and day headers
$datetoday = date('Y-m-d');
$calendar = "<table class='table table-bordered'>";
$calendar .= "<tr>";
// Create the calendar headers
foreach($daysOfWeek as $day) {
$calendar .= "<th class='header'>$day</th>";
}
// Create the rest of the calendar
// Initiate the day counter, starting with the 1st.
$currentDay = 1;
$calendar .= "</tr><tr>";
// The variable $dayOfWeek is used to
// ensure that the calendar
// display consists of exactly 7 columns.
if ($dayOfWeek > 0) {
for($k=0;$k<$dayOfWeek;$k++){
$calendar .= "<td class='empty'></td>";
}
}
$month = str_pad($month, 2, "0", STR_PAD_LEFT);
while ($currentDay <= $numberDays) {
// Seventh column (Saturday) reached. Start a new row.
if ($dayOfWeek == 7) {
$dayOfWeek = 0;
$calendar .= "</tr><tr>";
}
$currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT);
$date = "$year-$month-$currentDayRel";
$dayname = strtolower(date('l', strtotime($date)));
$calendar.="<td><h4>$currentDay</h4></td>";
// Increment counters
$currentDay++;
$dayOfWeek++;
}
// Complete the row of the last week in month, if necessary
if ($dayOfWeek != 7) {
$remainingDays = 7 - $dayOfWeek;
for($l=0;$l<$remainingDays;$l++){
$calendar .= "<td class='empty'></td>";
}
}
$calendar .= "</tr>";
$calendar .= "</table>";
echo $calendar;
答案 0 :(得分:0)
更改以下变量:
$daysOfWeek = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
和
$firstDayOfMonth = mktime(0,0,0,$month,1,$year) - 1;
// Create array containing abbreviations of days of week.
$daysOfWeek = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
// What is the first day of the month in question?
$firstDayOfMonth = mktime(0,0,0,$month,1,$year) - 1;
// How many days does this month contain?
$numberDays = date('t',$firstDayOfMonth);
// Retrieve some information about the first day of the
// month in question.
$dateComponents = getdate($firstDayOfMonth);
// What is the name of the month in question?
$monthName = $dateComponents['month'];
// What is the index value (0-6) of the first day of the
// month in question.
$dayOfWeek = $dateComponents['wday'];
// Create the table tag opener and day headers
$datetoday = date('Y-m-d');
$calendar = "<table class='table table-bordered'>";
$calendar .= "<tr>";
// Create the calendar headers
foreach($daysOfWeek as $day) {
$calendar .= "<th class='header'>$day</th>";
}
// Create the rest of the calendar
// Initiate the day counter, starting with the 1st.
$currentDay = 1;
$calendar .= "</tr><tr>";
// The variable $dayOfWeek is used to
// ensure that the calendar
// display consists of exactly 7 columns.
if ($dayOfWeek > 0) {
for($k=0;$k<$dayOfWeek;$k++){
$calendar .= "<td class='empty'></td>";
}
}
$month = str_pad($month, 2, "0", STR_PAD_LEFT);
while ($currentDay <= $numberDays) {
// Seventh column (Saturday) reached. Start a new row.
if ($dayOfWeek == 7) {
$dayOfWeek = 0;
$calendar .= "</tr><tr>";
}
$currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT);
$date = "$year-$month-$currentDayRel";
$dayname = strtolower(date('l', strtotime($date)));
$calendar.="<td><h4>$currentDay</h4></td>";
// Increment counters
$currentDay++;
$dayOfWeek++;
}
// Complete the row of the last week in month, if necessary
if ($dayOfWeek != 7) {
$remainingDays = 7 - $dayOfWeek;
for($l=0;$l<$remainingDays;$l++){
$calendar .= "<td class='empty'></td>";
}
}
$calendar .= "</tr>";
$calendar .= "</table>";
echo $calendar;
答案 1 :(得分:0)
更改以下内容以使其正常工作
$daysOfWeek = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'];
$firstDayOfMonth = mktime(0,0,0,$month,7,$year);