100分悬赏! PHP做周历,谁有做好的代码?或者提供我周历的算法也行!

somfy 2008-11-27 01:45:38
我想做个周历,选择一个周,显示这周的日期
上周 当前是第5周 下周
08/11/21(一)
08/11/22(二)
08/11/23(三)
08/11/24(四)
08/11/25(五)
08/11/26(六)
08/11/27(日)
...全文
246 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzcenter 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hzcenter 的回复:]
第几周可以用ceil()

//两个参数都是一年中第几天的数字表示
//可以用函数getdate获得

PHP codefunction weekNum($startday, $nowday)
{
return ceil(($nowday - $startday/ 7);
//这里括号错了,还有,没有加分号';'。还有,传入的参数是时间戳。那么,就不能除以7。应该是除以 7*3600*24 两个时间戳日期相减除以7*3600*24。
//再取一个ceil(大于该数的最小整数)就得到了第几周。很容易理解
}
$ChineseWeek = array(0=>'星期天',1=>'星期一',...);
//第一个星期的日期
$StartWeek = getdate(strtotime('08/11/21'));
$StartDay = $StartWeek['0'] - $StartWeek['wday']*3688*24;这里改成3600
$TheWeek = strtotime('08/11/21');//当前…
[/Quote]

有几个地方出错的,修正一下!
cyxin2121921 2008-12-01
  • 打赏
  • 举报
回复
mark
hzcenter 2008-11-27
  • 打赏
  • 举报
回复
第几周可以用ceil()

//两个参数都是一年中第几天的数字表示
//可以用函数getdate获得
function weekNum($startday, $nowday)
{
return ceil(($nowday - $startday)/ 7)
}
$ChineseWeek = array(0=>'星期天',1=>'星期一',...);
//第一个星期的日期
$StartWeek = getdate(strtotime('08/11/21'));
$StartDay = $StartWeek['0'] - $StartWeek['wday']*3688*24;
$TheWeek = strtotime('08/11/21');//当前查询日期
$TheWeekInfo = getdate($TheWeek);
$SDay = $TheWeek - $TheWeekInfo['wday']*3600*24;
$EDay = $SDay + 3600*24*7;
echo '第'+weekNum($StartDay,$TheWeek)+'周';
for ($i=$SDay;$i<$EDay;$i+=3600*24)
{
$DayInfo = getdate($i);
echo date("y/m/d", $i).$ChineseWeek[$DayInfo['wday']]."<BR>\n";
}


差不多就是这样子了
剑心永远OK 2008-11-27
  • 打赏
  • 举报
回复
你是坏人~哈哈。
程序猿之殇 2008-11-27
  • 打赏
  • 举报
回复
楼上的好人呀,呵呵.
剑心永远OK 2008-11-27
  • 打赏
  • 举报
回复
附上结果!

2008-11-24
2008-11-25
2008-11-26
2008-11-27
2008-11-28
2008-11-29
2008-11-30

应该有更好的方法的。顺手写了一下~
剑心永远OK 2008-11-27
  • 打赏
  • 举报
回复
结帖~

$end_date = dateweek(date('N',time()),time());
$start_date = date('Y-m-d', strtotime("$end_date -6 day"));
echo $start_date;
echo "<br>";
for ($i=1;$i<6;$i++)
{
echo date('Y-m-d',strtotime("$start_date +$i day"));
echo "<br>";
}
echo $end_date;


function dateweek($datetime,$time)
{
if(is_numeric($datetime))
{
switch ($datetime)
{
case 1:
$end_date = date('Y-m-d',strtotime("+6 day",$time));
break;
case 2:
$end_date = date('Y-m-d',strtotime("+5 day",$time));
break;
case 3:
$end_date = date('Y-m-d',strtotime("+4 day",$time));
break;
case 4:
$end_date = date('Y-m-d',strtotime("+3 day",$time));
break;
case 5:
$end_date = date('Y-m-d',strtotime("+2 day",$time));
break;
case 6:
$end_date = date('Y-m-d',strtotime("+1 day",$time));
break;
}
return $end_date;
}
}
somfy 2008-11-27
  • 打赏
  • 举报
回复
麻烦给个例子呗,我实在是不行了!我学PHP才一个月,谢谢大哥了!
penglewen 2008-11-27
  • 打赏
  • 举报
回复
应该是按年计算的吧。
date("W")
date("w")
date('N')
用这几个函数就可以搞定的。
somfy 2008-11-27
  • 打赏
  • 举报
回复
你有代码吗?给我个呗,我算好几天了,项目着急我算不出来了!谢谢大哥了!
somfy 2008-11-27
  • 打赏
  • 举报
回复
按年计算
剑心永远OK 2008-11-27
  • 打赏
  • 举报
回复
是论年计算的么?还是按月计算的?
somfy 2008-11-27
  • 打赏
  • 举报
回复
思考中。。。。。。最好能给个代码!
程序猿之殇 2008-11-27
  • 打赏
  • 举报
回复
如果1号是周一,则第五周,则第五周就是从 +28天到+35天
否则就算一下,第一周,上月有多少天,然后第五周就是 +28-上月第一周所在的天数 ~ +35天-上月第一周所在的天数 
somfy 2008-11-27
  • 打赏
  • 举报
回复
我怎么才能获取去到周内的日期。比如:第5周,我怎么才能得到第5周内的日期08/02/01---08/02/07
程序猿之殇 2008-11-27
  • 打赏
  • 举报
回复
date(); y年m月d日 w周(0为周日,1为周一)
strtotime("+1 week", time()); 下周
strtotime("-1 week", time()); 上周

第几周的这个还真没有找到,可能要自己算了.
其实就是这些函数,算来算去的.
somfy 2008-11-27
  • 打赏
  • 举报
回复
大哥,有周历吗?你这个也是日历啊?
somfy 2008-11-27
  • 打赏
  • 举报
回复
等等,我试试哈
海诗美妆 2008-11-27
  • 打赏
  • 举报
回复

<?
$time = time();

$year = date("Y", $time);
$month = date("n", $time);
$day = date("j", $time);

$year2=@$_GET["year"];
$month2=@$_GET["month"];
$day2=@$_GET["day"];

if($year2!="" || $month2!="" || $day2!=""){
if($year2!=""){
$year = $year2;
}
if($month2!=""){
$month = $month2;
}
if($day2!=""){
$day = $day2;
}
else{
$day = 1;
}
$time = mktime(0,0,0,$month,$day,$year);
}

$num = date("t", $time);

$today = mktime(0,0,0,$month,$day,$year);

$date = array('(日)','(一)','(二)','(三)','(四)','(五)','(六)');

if($month==1){
$year3 = $year-1;
$month3 = 12;
}
else{
$year3 = $year;
$month3 = $month-1;
}

if($month==12){
$year4 = $year+1;
$month4 = 1;
}
else{
$year4 = $year;
$month4 = $month+1;
}

print "<table width=150><tr><td colspan=7>";
print "<center>
<a href=\"?year=$year3&month=$month3\">".$month3."月</a>";
print " ".$year."年".$month."月 ";
print "<a href=\"?year=$year4&month=$month4\">".$month4."月</a>
</td></tr>
";

print "
<tr>
<td><font color=red>(日)</font></td>
<td>(一)</td>
<td>(二)</td>
<td>(三)</td>
<td>(四)</td>
<td>(五)</td>
<td><font color=blue>(六)</font></td>
</tr>
";

for($i=1;$i<=$num;$i++){

$print_today = mktime(0, 0, 0, $month, $i, $year);
$w = date("w", $print_today);

if($i==1){
print "<tr>";
for($j=1;$j<=$w;$j++){
print "<td></td>";
}
$data = check($i,$w,$year,$month,$day);
print "<td>$data</td>";
if($w==6){
print "</tr>";
}
}
else{
if($w==0){
print "<tr>";
}
$data = check($i,$w,$year,$month,$day);
print "<td>$data</td>";
if($w==6){
print "</tr>";
}
}

}
print "</table>";

function check($i,$w,$year,$month,$day){

if($w==0){
$change = "<font color=red><a href=\"?year=$year
&month=$month&day=$i&write=on\" color=red>$i</a></font>";
}
elseif($w==6){
$change = "<font color=blue><a href=\"?year=$year
&month=$month&day=$i&write=on\">$i</a></font>";
}
else{
$change = "<a href=\"?year=$year&month=$month&day=$i
&write=on\">$i</a>";
}

return $change;

}
?>

21,890

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧