【发布时间】:2012-03-19 15:57:25
【问题描述】:
我有这个简单的 PHP 日历模板(从星期一开始,而不是星期日,因为我是意大利人)
<?php
$date = strtotime("2011-05-19");
$monthNames = Array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre");
$cMonth = date("n", $date);
$cYear = date("Y", $date);
?>
<table border="1" cellpadding="4" cellspacing="0">
<caption>
<?php echo $monthNames[$cMonth-1].' '.$cYear; ?>
</caption>
<tr>
<th>l</th>
<th>m</th>
<th>m</th>
<th>g</th>
<th>v</th>
<th>s</th>
<th>d</th>
</tr>
<?php
$timestamp = mktime(0,0,0,$cMonth,1,$cYear);
$maxday = date("t",$timestamp);
$thismonth = getdate($timestamp);
$startday = $thismonth['wday']-1;
for ($i=0; $i<($maxday+$startday); $i++) {
if(($i % 7) == 0 ) { ?>
<tr>
<?php } ?>
<?php if($i < $startday) { ?>
<td> </td>
<?php } else { ?>
<td align='center' valign='middle' height='20px'><?php echo ($i - $startday + 1); ?></td>
<?php } ?>
<?php if(($i % 7) == 6 ) { ?>
</tr>
<?php } ?>
<?php }
?>
</table>
尽管有这个“意大利面条代码”,但它很简单而且......几乎可以工作
我只有两个问题(请更改 $date 值并自行查看):
- 如果一个月的最后一天不是一周的最后一天,则日历末尾的表格单元格会丢失
- 有些月份不是从 1 开始的(即尝试使用 $date = strtotime("2011-05-15");)
有什么帮助吗? 提前非常感谢
【问题讨论】:
-
这听起来不像是一个问题,而更像是一个未完成的实现。如果您在月初之前(例如当月不是从星期日开始)或在月底(例如当月不是在星期六结束时)缺少表格单元格,请添加它们。测试这些条件并添加适当的表格单元格。例如,许多日历会在上个月或下个月的天数中添加灰色样式,作为它们不是“当前”的视觉指示。
-
吉姆,如果我可以在表格的开头和结尾添加单元格,我没有写一个问题寻求帮助:我不知道如何做到这一点(而且,无论如何,似乎你读得很“过路”我的问题:我的一周从星期一开始,到星期日结束)