我是PHP的新学习者,现在我想使用它来执行如下日历。有些事情我不知道。
如何获得本月的第一天是星期日还是其他?
如何输出当月的所有日子并强调今天?
代码:
<table cellspacing="0" cellpadding="3" bordercolor="#000000" border="1" style="width: 105px; border-collapse: collapse;">
<tbody>
<tr>
<td colspan="7"><?php echo date('F')." ".date('Y');?></td>
</tr>
<tr>
<td>Su</td>
<td>M</td>
<td>Tu</td>
<td>W</td>
<td>Th</td>
<td>F</td>
<td>Sa</td>
</tr>
<?php
$numrows = ceil(date('t')/7);
for($k=1;$k<=$numrows;$k++){
?>
<tr><td></td></tr>
<?php }?>
</tbody>
</table>
我不知道如何输出以下几天。
答案 0 :(得分:3)
date('d', strtotime('2012-04-01'));
将年份和月份替换为您要检查的实际年份和月份。第一天离开01
。
http://php.net/manual/en/function.date.php
您可以使用没有第二个参数的date()
来获取您想要的当前时间格式。要输出当月的日期,您需要知道如何格式化它们,以便由您决定。但是,要获得给定月份的天数,您可以使用:
date('t')
这将返回28到31之间的数字,具体取决于月份的持续时间。
答案 1 :(得分:0)
当http://jqueryui.com/demos/datepicker/可用时,你现在永远不需要这些东西,但如果你想要这里是我10年前写的代码,哈哈:)
<?
function my_calendar($fill=array()) {
if (isset($_GET['y'])) $y=$_GET['y'];
if (isset($_GET['m'])) $m=$_GET['m'];
if (isset($_GET['date']) AND strstr($_GET['date'],"-")) list($y,$m)=explode("-",$_GET['date']);
if (!isset($y) OR $y < 1970 OR $y > 2037) $y=date("Y");
if (!isset($m) OR $m < 1 OR $m > 12) $m=date("m");
$month_stamp=mktime(0,0,0,$m,1,$y);
$month_name=date("M",$month_stamp);
$day_count=date("t",$month_stamp);
$weekday=date("w",$month_stamp);
if ($weekday==0) $weekday=7;
$start=-($weekday-2);
$last=($day_count+$weekday-1) % 7;
if ($last==0) $end=$day_count; else $end=$day_count+7-$last;
$today=date("Y-m-d");
$prev=date('?\m=m&\y=Y',mktime (0,0,0,$m-1,1,$y));
$next=date('?\m=m&\y=Y',mktime (0,0,0,$m+1,1,$y));
$i=0;
?>
<table border=1 cellspacing=0 cellpadding=2>
<tr>
<td colspan=7>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td align="left"><a href="<? echo $prev ?>"><<<</a></td>
<td align="center"><? echo $month_name," ",$y ?></td>
<td align="right"><a href="<? echo $next ?>">>>></a></td>
</tr>
</table>
</td>
</tr>
<tr><td>Mon</td><td>Tue</td><td>Wed</td><td>Th</td><td>Fri</td><td>Sat</td><td>Sun</td><tr>
<?
for($d=$start;$d<=$end;$d++) {
if (!($i++ % 7)) echo " <tr>\n";
echo ' <td align="center">';
if ($d < 1 OR $d > $day_count) {
echo " ";
} else {
$now="$y-$m-".sprintf("%02d",$d);
if (is_array($fill) AND in_array($now,$fill)) {
echo '<b><a href="'.$_SERVER['PHP_SELF'].'?date='.$now.'">'.$d.'</a></b>';
} else {
echo $d;
}
}
echo "</td>\n";
if (!($i % 7)) echo " </tr>\n";
}
?>
</table>
<? } ?>
使用示例
<?
if (isset($_GET['date'])) echo "Date picked: ".$_GET['date'];
my_calendar(array(date("Y-m-d")));
?>
它首先显示在星期一。您需要删除一些行以使其进入星期日