PHP当中如何判断一个周的起始日期与结束日期 你要根据什么来判断?weekNum存的是什么数据?本年内的第几个周? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 weekNum存的是本年内的第X个周 涉及一点算法,有点意思,参考以下.你再测试一下,看有什么问题没有.===========================================================//function:/** * get week's first and last day * * @param string $year //年份 * @param string $weekAtYear // 周数 * @return array $days */function getDays($year,$weekAtYear){ //找出年份第一天是星期几(1-7) $firstDay = date('N',strtotime("$year-01-01")); //找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天. $leftDayInWeek = 8 - $firstDay; //星期一的日期(Y-m-d) $days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInWeek*24*60*60); if($weekAtYear == 1 && $firstDay != 1) {//第一周,且第一天不是星期一 $days['sunday'] = date("Y-m-0$leftDayInWeek",strtotime($days['monday'])); } else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60); return $days;}//use:$date = getDays('2007',2);//output:print_r($date); <?php/* * 功能:取得给定日期所在周的开始日期和结束日期 * 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD * $first 一周以星期一还是星期天开始,0为星期天,1为星期一 * 返回:数组array("开始日期", "结束日期"); * 作者:多菜鸟 * Email: kingerq AT msn.com * 来源:http://blog.csdn.net/kingerq */function aweek($gdate = "", $first = 0){ if(!$gdate) $gdate = date("Y-m-d"); $w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6 $dn = $w ? $w - $first : 6;//要减去的天数 $st = date("Y-m-d", strtotime("$gdate -".$dn." days")); $en = date("Y-m-d", strtotime("$st +6 days")); return array($st, $en);//返回开始和结束日期}echo implode("|", aweek("", 1));?>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=326856 一个比较简单的:function get_spdate($s) { $g = strftime("%u",strtotime($s)); $sdate = strftime("%Y-%m-%d",strtotime($s) - ($g-1)*86400); $edate = strftime("%Y-%m-%d",strtotime($s) + (7-$g)*86400); echo "Start Date:$sdate End Date:$edate \n";}$s = "2007-02-08";get_spdate($s); 你是根据周数来判断的哦?你确定答案就是你想要的.我的改了一下,计数错料.:-)//function:/** * get week's first and last day * * @param string $year //year * @param string $weekAtYear // the week num in given year * @return array $days */function getDays($year,$weekAtYear){ //找出年份第一天是星期几(1-7) $firstDay = date('N',strtotime("$year-01-01")); //找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天. $leftDayInFirstWeek = 8 - $firstDay; //星期一的日期(Y-m-d) if($weekAtYear <= 2) { $days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInFirstWeek*24*60*60); } else { $days['monday'] = date("Y-m-d",strtotime("$year-01-01")+$leftDayInFirstWeek*24*60*60+($weekAtYear-2)*7*24*60*60); } if($weekAtYear == 1 && $firstDay != 1) {//第一周,且第一天不是星期一 $days['sunday'] = date("Y-m-0$leftDayInFirstWeek",strtotime($days['monday'])); } else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60); return $days;}//use:$date = getDays('2006',date("W"));//output:print_r($date); /** # @param $year 年份 # @param $week 周次 # @return 例如:XXXX年第X周的起始日期和结束日期*/function getWeekStartTimeAndEndTime($year, $week){ } 因为数据库表里是这样的:id, usID ,year(年份), weekNum(周次), 等在前台显示的时候我需要了解XXXX年XX周的起始结束日期. foolbirdflyfirst(湖水清澈):兄弟好像是差了一天. $date = getDays('2007',3);//output:print_r($date);[monday] => 2007-01-16 ==><这个是星期二>[sunday] => 2007-01-22 我说了你看看我最后发给你的,我改过啦!======================================//function:/*** get week's first and last day** @param string $year //year* @param string $weekAtYear // the week num in given year* @return array $days*/function getDays($year,$weekAtYear){//找出年份第一天是星期几(1-7)$firstDay = date('N',strtotime("$year-01-01"));//找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天.$leftDayInFirstWeek = 8 - $firstDay;//星期一的日期(Y-m-d)if($weekAtYear <= 2){$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInFirstWeek*24*60*60);}else{$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+$leftDayInFirstWeek*24*60*60+($weekAtYear-2)*7*24*60*60);}if($weekAtYear == 1 && $firstDay != 1){//第一周,且第一天不是星期一$days['sunday'] = date("Y-m-0$leftDayInFirstWeek",strtotime($days['monday']));}else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60);return $days;}//use:$date = getDays('2007',3);//output:print_r($date);=========Array ( [monday] => 2007-01-15 [sunday] => 2007-01-21 ) <?php//function:/*** get week's first and last day** @param string $year //year* @param string $weekAtYear // the week num in given year* @return array $days*/function getDays($year,$weekAtYear){//找出年份第一天是星期几(1-7)$firstDay = date('N',strtotime("$year-01-01"));//找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天.$leftDayInFirstWeek = 8 - $firstDay;//星期一的日期(Y-m-d)if($weekAtYear <= 2){$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInFirstWeek*24*60*60);}else{$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+$leftDayInFirstWeek*24*60*60+($weekAtYear-2)*7*24*60*60);}if($weekAtYear == 1 && $firstDay != 1){//第一周,且第一天不是星期一$days['sunday'] = date("Y-m-0$leftDayInFirstWeek",strtotime($days['monday']));}else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60);return $days;}//use:$date = getDays('2007',1);//output:print_r($date);?>=================X-Powered-By: PHP/4.4.4Content-type: text/htmlArray( [monday] => 2007-01-01 [sunday] => 2007-01-08===>应该为7Q)还是错误.代码我已经换成你修改的了 .....N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)php5.1.0新加,我用php5,没问题.//找出年份第一天是星期几(1-7)$firstDay = date('N',strtotime("$year-01-01"));============改成 $firstDay = date('w',strtotime("$year-01-01")); 没php4,你再测试一下$firstDay = date('N',strtotime("$year-01-01"));============================改成 $firstDay = date('w',strtotime("$year-01-01"));php5下测试了一下,是通过的. 跪求php高人 Fatal error: Cannot redeclare strlen() 求转译一段代码 菜鸟请教-读取*.ini文件方法 那位大虾帮下帮,谢谢了。(表单的菜单用数组实现) PHP中,怎么处理双引号? 分页的问题 PHP能连接ms sql吗? php的时间问题 *****请问用代码循环生成一组文本框,怎么在提交时取到其值 正则表达式 gettimeofday() 函数默认的时间是 GMT 吗?
===========================================================
//function:
/**
* get week's first and last day
*
* @param string $year //年份
* @param string $weekAtYear // 周数
* @return array $days
*/
function getDays($year,$weekAtYear)
{
//找出年份第一天是星期几(1-7)
$firstDay = date('N',strtotime("$year-01-01"));
//找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天.
$leftDayInWeek = 8 - $firstDay;
//星期一的日期(Y-m-d)
$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInWeek*24*60*60);
if($weekAtYear == 1 && $firstDay != 1)
{//第一周,且第一天不是星期一
$days['sunday'] = date("Y-m-0$leftDayInWeek",strtotime($days['monday']));
}
else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60);
return $days;
}
//use:
$date = getDays('2007',2);
//output:
print_r($date);
/*
* 功能:取得给定日期所在周的开始日期和结束日期
* 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
* $first 一周以星期一还是星期天开始,0为星期天,1为星期一
* 返回:数组array("开始日期", "结束日期");
* 作者:多菜鸟
* Email: kingerq AT msn.com
* 来源:http://blog.csdn.net/kingerq
*/
function aweek($gdate = "", $first = 0){
if(!$gdate) $gdate = date("Y-m-d");
$w = date("w", strtotime($gdate));//取得一周的第几天,星期天开始0-6
$dn = $w ? $w - $first : 6;//要减去的天数
$st = date("Y-m-d", strtotime("$gdate -".$dn." days"));
$en = date("Y-m-d", strtotime("$st +6 days"));
return array($st, $en);//返回开始和结束日期
}
echo implode("|", aweek("", 1));
?>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=326856
function get_spdate($s) {
$g = strftime("%u",strtotime($s));
$sdate = strftime("%Y-%m-%d",strtotime($s) - ($g-1)*86400);
$edate = strftime("%Y-%m-%d",strtotime($s) + (7-$g)*86400);
echo "Start Date:$sdate End Date:$edate \n";
}$s = "2007-02-08";
get_spdate($s);
你确定答案就是你想要的.
我的改了一下,计数错料.:-)//function:
/**
* get week's first and last day
*
* @param string $year //year
* @param string $weekAtYear // the week num in given year
* @return array $days
*/
function getDays($year,$weekAtYear)
{
//找出年份第一天是星期几(1-7)
$firstDay = date('N',strtotime("$year-01-01"));
//找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天.
$leftDayInFirstWeek = 8 - $firstDay;
//星期一的日期(Y-m-d)
if($weekAtYear <= 2)
{
$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInFirstWeek*24*60*60);
}
else
{
$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+$leftDayInFirstWeek*24*60*60+($weekAtYear-2)*7*24*60*60);
}
if($weekAtYear == 1 && $firstDay != 1)
{//第一周,且第一天不是星期一
$days['sunday'] = date("Y-m-0$leftDayInFirstWeek",strtotime($days['monday']));
}
else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60);
return $days;
}
//use:
$date = getDays('2006',date("W"));
//output:
print_r($date);
# @param $year 年份
# @param $week 周次
# @return 例如:XXXX年第X周的起始日期和结束日期
*/
function getWeekStartTimeAndEndTime($year, $week)
{
}
//output:
print_r($date);[monday] => 2007-01-16 ==><这个是星期二>
[sunday] => 2007-01-22
======================================
//function:
/**
* get week's first and last day
*
* @param string $year //year
* @param string $weekAtYear // the week num in given year
* @return array $days
*/
function getDays($year,$weekAtYear)
{
//找出年份第一天是星期几(1-7)
$firstDay = date('N',strtotime("$year-01-01"));
//找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天.
$leftDayInFirstWeek = 8 - $firstDay;
//星期一的日期(Y-m-d)
if($weekAtYear <= 2)
{
$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInFirstWeek*24*60*60);
}
else
{
$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+$leftDayInFirstWeek*24*60*60+($weekAtYear-2)*7*24*60*60);
}
if($weekAtYear == 1 && $firstDay != 1)
{//第一周,且第一天不是星期一
$days['sunday'] = date("Y-m-0$leftDayInFirstWeek",strtotime($days['monday']));
}
else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60);return $days;
}
//use:
$date = getDays('2007',3);
//output:
print_r($date);=========
Array ( [monday] => 2007-01-15 [sunday] => 2007-01-21 )
//function:
/**
* get week's first and last day
*
* @param string $year //year
* @param string $weekAtYear // the week num in given year
* @return array $days
*/
function getDays($year,$weekAtYear)
{
//找出年份第一天是星期几(1-7)
$firstDay = date('N',strtotime("$year-01-01"));
//找出第一个星期剩余天数,用于计数.比如2008-01-01号是星期二,则剩余6天到第一个星期天.
$leftDayInFirstWeek = 8 - $firstDay;
//星期一的日期(Y-m-d)
if($weekAtYear <= 2)
{
$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+($weekAtYear-1)*$leftDayInFirstWeek*24*60*60);
}
else
{
$days['monday'] = date("Y-m-d",strtotime("$year-01-01")+$leftDayInFirstWeek*24*60*60+($weekAtYear-2)*7*24*60*60);
}
if($weekAtYear == 1 && $firstDay != 1)
{//第一周,且第一天不是星期一
$days['sunday'] = date("Y-m-0$leftDayInFirstWeek",strtotime($days['monday']));
}
else $days['sunday'] = date("Y-m-d",strtotime($days['monday'])+6*24*60*60);return $days;
}
//use:
$date = getDays('2007',1);
//output:
print_r($date);
?>
=================X-Powered-By: PHP/4.4.4
Content-type: text/htmlArray
(
[monday] => 2007-01-01
[sunday] => 2007-01-08===>应该为7Q
)
还是错误.代码我已经换成你修改的了
ISO-8601
格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)php5.1.0新加,我用php5,没问题.//找出年份第一天是星期几(1-7)
$firstDay = date('N',strtotime("$year-01-01"));
============
改成
============================
改成 $firstDay = date('w',strtotime("$year-01-01"));php5下测试了一下,是通过的.