PHP当中如何判断一个周的起始日期与结束日期

吉林小江南 2007-08-27 10:01:47
数据库表:
id, usid, weekNum, monday-----sunday.

PHP当中如何判断一个周的起始日期与结束日期
...全文
1086 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
没php4,你再测试一下

$firstDay = date('N',strtotime("$year-01-01"));
============================
改成 $firstDay = date('w',strtotime("$year-01-01"));

php5下测试了一下,是通过的.
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
$firstDay = date('w',strtotime("$year-01-01"));
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
.....

N
ISO-8601
格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)

php5.1.0新加,我用php5,没问题.

//找出年份第一天是星期几(1-7)
$firstDay = date('N',strtotime("$year-01-01"));
============
改成
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
<?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.4
Content-type: text/html

Array
(
[monday] => 2007-01-01
[sunday] => 2007-01-08===>应该为7Q
)
还是错误.代码我已经换成你修改的了
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
我说了你看看我最后发给你的,我改过啦!
======================================
//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 )
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
$date = getDays('2007',3);
//output:
print_r($date);

[monday] => 2007-01-16 ==><这个是星期二>
[sunday] => 2007-01-22
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
foolbirdflyfirst(湖水清澈):兄弟

好像是差了一天.
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
表格
第一周:

  星期一,星期二...等
  XX号,XX号...
  数据1,数据2
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
参考我最后给你的答案,测试一下.:-)
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
因为数据库表里是这样的:

id, usID ,year(年份), weekNum(周次), 等

在前台显示的时候我需要了解XXXX年XX周的起始结束日期.
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
朋友们顶....送出所有分也没问题..

参数1 只有年份(2007 | 2008 | 2009)
参数2 周次(第一周.....)
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
/**
# @param $year 年份
# @param $week 周次
# @return 例如:XXXX年第X周的起始日期和结束日期
*/
function getWeekStartTimeAndEndTime($year, $week)
{

}
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
你是根据周数来判断的哦?
你确定答案就是你想要的.
我的改了一下,计数错料.:-)

//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);
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
看到代码了:)好感动.找了好久...
总之非常谢谢大家.....
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
T_T...
我的有错.....
参考以上两位
Aylazhang 2007-08-27
  • 打赏
  • 举报
回复
一个比较简单的:
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);
多菜鸟 2007-08-27
  • 打赏
  • 举报
回复
<?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
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
涉及一点算法,有点意思,参考以下.你再测试一下,看有什么问题没有.
===========================================================
//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);
吉林小江南 2007-08-27
  • 打赏
  • 举报
回复
weekNum存的是本年内的第X个周
foolbirdflyfirst 2007-08-27
  • 打赏
  • 举报
回复
你要根据什么来判断?
weekNum存的是什么数据?
本年内的第几个周?
加载更多回复(4)

21,886

社区成员

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

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