$year=2011;$week=35;//2011年中的第35周我现在想得到第35周中每天的日期,应该怎么得到啊,(一周,从周一开始)
解决方案 »
- phpexcel下载excel乱码问题
- 根据关键字搜索数据时,如何在执行sql语句时去掉字段中的html标签,再使用like去模糊查询??
- smarty模板问题
- 突然有个小问题,问问大家,我有点糊涂了
- 文件上传的大小到哪控制
- 客户端md5加密毛用
- 大侠,求救!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
- 为何使用mail()时总是出现连接失败的错误!
- 求助,js很多看不懂,我只学过php 还有点html css知识。
- 类似这样的网页,浏览器访问之后如何做到显示mp4或者图像的?
- 用XAMPP组件包装的环境能不能支持ORACLE数据库的连接
- 求一简单的url重写 .htaccess代码
你看哈前辈,我就是想实现这么一个功能,当我选择不同的周,能显示出不同的日期来,可是现在遇到了下面的问题。当$week=34的时候,可以输出这样的效果
08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五) 08/27(星期六) 可是当我传进来另一个$week值的时候(即$week=35)的时候,就变成了下面这样的
08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五
应该是:(08/28(星期日) 08/29(星期一) 08/30(星期二) 08/31(星期三) 09/01(星期四) 08/02(星期五) 08/03(星期六) )当$week=36的时候,又变成了这样的
08/19(星期五) 08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) ...下面依次类推[/color] $week=34;//这个是从页面提交过来的周数,假定为当前的第34周
$weekstart=strtotime("-$week days",time());
$weekend=strtotime("+".(7-$week)." days",time());
$weekstartday=date("d",$weekstart);
$weekendday=date("d",$weekend);
$re.="<table width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
$re.="<tr>";
for ($i=$weekstartday;$i<$weekendday;$i++)
{
$weekday=date("w",mktime(0,0,0,$month,$i,$year));
if($weekday==0)
{
$weekStr="星期日";
}
if($weekday==1)
{
$weekStr="星期一";
}
if($weekday==2)
{
$weekStr="星期二";
}
if($weekday==3)
{
$weekStr="星期三";
}
if($weekday==4)
{
$weekStr="星期四";
}
if($weekday==5)
{
$weekStr="星期五";
}
if($weekday==6)
{
$weekStr="星期六";
}
$re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$i."(".$weekStr.")</strong></td>";
}
$re.="</tr>";
$re.="</table>";
08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五) 08/27(星期六) 可是当我传进来另一个$week值的时候(即$week=35)的时候,就变成了下面这样的
08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) 08/26(星期五
应该是:(08/28(星期日) 08/29(星期一) 08/30(星期二) 08/31(星期三) 09/01(星期四) 08/02(星期五) 08/03(星期六) )当$week=36的时候,又变成了这样的
08/19(星期五) 08/20(星期六) 08/21(星期日) 08/22(星期一) 08/23(星期二) 08/24(星期三) 08/25(星期四) ...下面依次类推[/color]
$week=34;//这个是从页面提交过来的周数,假定为当前的第34周
$weekstart=strtotime("-$week days",time());
$weekend=strtotime("+".(7-$week)." days",time());
$weekstartday=date("d",$weekstart);
$weekendday=date("d",$weekend);
$re.="<table width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
$re.="<tr>";
for ($i=$weekstartday;$i<$weekendday;$i++)
{
$weekday=date("w",mktime(0,0,0,$month,$i,$year));
if($weekday==0)
{
$weekStr="星期日";
}
if($weekday==1)
{
$weekStr="星期一";
}
if($weekday==2)
{
$weekStr="星期二";
}
if($weekday==3)
{
$weekStr="星期三";
}
if($weekday==4)
{
$weekStr="星期四";
}
if($weekday==5)
{
$weekStr="星期五";
}
if($weekday==6)
{
$weekStr="星期六";
}
$re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$i."(".$weekStr.")</strong></td>";
}
$re.="</tr>";
$re.="</table>";
$weekstart=strtotime("-$week days",time());//从当前日期向前 $week 天是什么含义?
$weekend=strtotime("+".(7-$week)." days",time());//从当前日期向前 $week-7 天又是什么含义?
7-$week 就是显示几天啊,从周日开始,如果是6,就显示六天
那个向前$week,我也不太明白是怎么了,您看看有什么好办法么,我也觉得是错在这了...
看#28,一句搞定。关键还是Date input format要熟悉,否则自己写就要先找到当前年第一个星期一是几月几号,不一定是1月1号开始算的周数。
* get sunday -> saturday by week number 35 in year 2011
*=========================================================
* echo dateByWeek(35,0,2011)." - ".dateByWeek(35,6,2011);
*=========================================================
*/
function dateByWeek($weekno,$day=1,$year='2011')
{
return date('Y-m-d',strtotime("{$year}W{$weekno}{$day}"));
}
您看我是不是用的不对,我这么写,写完后运行结果还和我提问时候的效果 一样,这怎么了啊
$year=2011;
$week=34;
$day=1;
$weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}{$day}")));
$weekstartday=date("d",$weekstart); $re.="<table width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
$re.="<tr>";
for ($i=0;$i<=7;$i++)
{
$day1=$weekstartday+$i;
$weekday=date("w",mktime(0,0,0,$month,$day1,$year));
if($weekday==0)
{
$weekStr="星期日";
}
if($weekday==1)
{
$weekStr="星期一";
}
if($weekday==2)
{
$weekStr="星期二";
}
if($weekday==3)
{
$weekStr="星期三";
}
if($weekday==4)
{
$weekStr="星期四";
}
if($weekday==5)
{
$weekStr="星期五";
}
if($weekday==6)
{
$weekStr="星期六";
}
$re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$day1."(".$weekStr.")</strong></td>";
}
$re.="</tr>";
$re.="</table>";
$week=34;
$weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
$weekstartday=date("d",$weekstart);
$aWeek = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');$re="<table width=auto cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
$re.="<tr>";
for ($i=0;$i< 7;$i++){
$thetime=strtotime("+$i day",$weekstart);
$weekstr = $aWeek[date('w',$thetime)];
$month = date('m',$thetime);
$day=date('d',$thetime);
$re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>{$month}/{$day}({$weekstr})</strong></td>";
}
$re.="</tr>";
$re.="</table>";
echo $re;
strtotime("{$year}W{$weekno}{$day}")
中的 $day 表示周几function dateByWeek($weekno,$day=1,$year='2011')
{
return date('Y-m-d w',strtotime("{$year}W{$weekno}{$day}"));
}for($i=1; $i<=7; $i++)
echo dateByWeek(35, $i) . PHP_EOL;2011-08-29 1
2011-08-30 2
2011-08-31 3
2011-09-01 4
2011-09-02 5
2011-09-03 6
2011-09-04 0
非常感谢啊,不过前辈,我刚刚试了试,还是有个问题
就是当$week=1的时候,显示出来的就变成了
03/07(星期一) 03/08(星期二) 03/09(星期三) 03/10(星期四) 03/11(星期五) 03/12(星期六) 03/13(星期日)
它从三月份开始了,这是怎么了啊
不过前辈,我刚刚试了试,还是有个问题
就是当$week=1的时候,显示出来的就变成了
03/07(星期一) 03/08(星期二) 03/09(星期三) 03/10(星期四) 03/11(星期五) 03/12(星期六) 03/13(星期日)
它从三月份开始了,这是怎么了啊
$year=2011;
$week=1;
$weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
$weekstartday=date("d",$weekstart);
$aWeek = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六');$re="<table width=auto cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
$re.="<tr>";
for ($i=0;$i< 7;$i++){
$thetime=strtotime("+$i day",$weekstart);
$weekstr = $aWeek[date('w',$thetime)];
$month = date('m',$thetime);
$day=date('d',$thetime);
$re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>{$month}/{$day}({$weekstr})</strong></td>";
}
$re.="</tr>";
$re.="</table>";
echo $re;
$week必须是个长度为2的串,1-9前面都要加0,你上面的代码把$week=1改成$week = '01'就对了
当2011的第一个周的时候,得到的第一天是2011-03-07,这是怎么回事 啊$year=2011;
$week=1;
$weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
echo $weekstart;
$week=1;
$weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}0")));
echo $weekstart;
<?php
echo header("Content-type: text/html; charset=utf-8");
//phpinfo();
echo strftime('%Y-%m-%d',strtotime('+34 week',strtotime('2011-01-01')))."<br>";
$year=2011;
$week=34;
$day=1;
$weekstart=strtotime(date('Y-m-d',strtotime("{$year}W{$week}{$day}")));
$weekstartday=date("d",$weekstart);
$month = date("m", $weekstart);
echo date("Y-m-d", $weekstart)."<br>".$weekstartday;
$re.="<table width=100% cellspacing=\"1\" cellpadding=\"5\" class=\"tablebord\">";
$re.="<tr>";
for ($i=0;$i<=7;$i++)
{
$day1=$weekstartday+$i;
$weekday=date("w",mktime(0,0,0,$month,$day1,$year));
if($weekday==0)
{
$weekStr="星期日";
}
if($weekday==1)
{
$weekStr="星期一";
}
if($weekday==2)
{
$weekStr="星期二";
}
if($weekday==3)
{
$weekStr="星期三";
}
if($weekday==4)
{
$weekStr="星期四";
}
if($weekday==5)
{
$weekStr="星期五";
}
if($weekday==6)
{
$weekStr="星期六";
}
$re.="<td width=\"10%\" align=\"center\" style=\"font-size:12px\"><strong>".$month."/".$day1."(".$weekStr.")</strong></td>";
}
$re.="</tr>";
$re.="</table>";
echo $re;