Я работаю над сайтом, который отображает календарь на 2015 год.
я использую https://www.hscripts.com/scripts/php/yearly-calendar.php.
Вы можете увидеть демо на странице. На демо вы можете увидеть начало недели в понедельник. Я хочу перенести начало недели на понедельник. Кто-нибудь знает, как я могу изменить приведенный ниже код, чтобы таблица с днями начиналась с понедельника и чтобы календарь все еще считал правильным?
<?php
$year = 2015;
echo "<table cellspacing=10 border=0>";
echo "<tr><td align=center colspan=3 class='topic'>$year Yearly Calendar</td></tr>";
for($ti=0;$ti<12;$ti++) {
$month = $ti+1;
if($ti%3==0) echo "<tr>";
echo "<td valign='top'>";
echo "<span class='monthnames'><b>".date( 'M', mktime(0, 0, 0, $month,1,0) )."</b></span>";
echo "<table border=0 class='tab'>";
echo "<tr class='daynames'><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td></tr>";
$timestamp = mktime(0,0,0,$month,1,$year);
$maxday = date("t",$timestamp);
$thismonth = getdate ($timestamp);
$startday = $thismonth['wday'];
for($i=0; $i<($maxday+$startday); $i++) {
if(($i % 7) == 0 ) {
echo "<tr>\n";
}
if($i < $startday) echo "<td></td>\n";
else{
if($i - $startday + 1 == date('d') && date( 'F', mktime(0, 0, 0, $month,1,0) ) == date('F') && $year == date('Y'))
echo "<td align='center' valign='middle' class='curdate'>".($i - $startday + 1)."</td>\n";
else
echo "<td align='center' valign='middle'>".($i - $startday + 1)."</td>\n";
}
if(($i % 7) == 6 ) echo "</tr>\n";
}
echo "</table>";
echo "</td>";
if($ti!=0 && ($ti+1)%3==0) echo "</tr>";
}
echo "</table>";
Попробуй это:
$year = 2015;
echo '<table border="1">';
echo '<tr><th colspan="3">' . $year . ' Yearly Calendar</th></tr>';
for ($month = 1; $month <= 12; $month++) {
if ($month - 1 % 3 === 0) echo '<tr>';
$f = new DateTime("$year-$month-1");
$l = new DateTime($f->format('Y-m-t'));
echo '<td valign="top">';
echo '<table border="1">';
echo '<tr><th colspan="7">' . $f->format('F') . '</th></tr>';
echo '<tr><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th><th>S</th></tr>';
while ($f->format('n') === $l->format('n')) {
echo '<tr>';
for ($N = 1; $N < $f->format('N'); $N++) {
echo '<td></td>';
}
for ($N = $f->format('N'); $N <= 7; $N++) {
if ($f->format('n') === $l->format('n')) {
echo '<td>' . $f->format('j') . '</td>';
$f->modify('+1 day');
} else {
echo '<td></td>';
}
}
echo '<tr>';
}
echo '</table>';
echo '</td>';
if ($month % 3 === 0) echo '</tr>';
}
echo '</table>';
Он вернется:
Вот, пожалуйста, человек — неделя начинается с понедельника, а дни верны.
<?php
$year = 2015;
echo "<table cellspacing=10 border=0>";
echo "<tr><td align=center colspan=3 class='topic'>$year Yearly Calendar</td></tr>";
for($ti=0;$ti<12;$ti++) {
$month = $ti+1;
if($ti%3==0) echo "<tr>";
echo "<td valign='top'>";
echo "<span class='monthnames'><b>".date( 'M', mktime(0, 0, 0, $month,1,0) )."</b></span>";
echo "<table border=0 class='tab'>";
echo "<tr class='daynames'><td>M</td><td>T</td><td>W</td><td>T</td> <td>F</td><td>S</td><td>S</td></tr>";
$timestamp = mktime(0,0,0,$month,1,$year);
$maxday = date("t",$timestamp);
$thismonth = getdate ($timestamp);
$startday = $thismonth['wday']-1;
for($i=0; $i<($maxday+$startday); $i++) {
if(($i % 7) == 0 ) {
echo "<tr>\n";
}if($i < $startday) echo "<td></td>\n";
else{if($i - $startday + 1 == date('d') && date( 'F', mktime(0, 0, 0, $month,1,0) ) == date('F') && $year == date('Y'))
echo "<td align='center' valign='middle' class='curdate'>".($i - $startday + 1)."</td>\n";
else
echo "<td align='center' valign='middle'>".($i - $startday + 1)."</td>\n";}
if(($i % 7) == 6 ) echo "</tr>\n";
}
echo "</table>";
echo "</td>";
if($ti!=0 && ($ti+1)%3==0) echo "</tr>";
}
echo "</table>";
?>