MYSQL: SELECT WEEK(`datefield`, 1) as weeknum, `datefield` FROM `tablename` WHERE WEEK(`datefield`, 1) > WEEK(now(), 1) - 5 ORDER BY WEEK(`datefield`, 1) DESCWEEK(`datefield`, 1) 得到日期为第几周,参数1表示每周以星期一开始
WEEK(`datefield`, 1) > WEEK(now(), 1) - 5 取得五周内的资料,自行调整。
WEEK(`datefield`, 1) > WEEK(now(), 1) - 5 取得五周内的资料,自行调整。
/*
* 功能:取得一周的开始日期和结束日期
* 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
* $first 一周以星期一还是星期天开始,0为星期天,1为星期一
* 返回:数组array("开始日期", "结束日期");
* 作者:多菜鸟
* Email: kingerq AT msn.com
* 来源:
*/
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));
?>
aaaaaaaaaaaaaa
bbbbbbbbbbbbbb
cccccccccccccc3.18 -- 3.25
dddddddddddddd
eeeeeeeeeeeeee
ffffffffffffff
那我循环怎样控制呢?
<?
$sql = "SELECT WEEK(`datefield`, 1) as weeknum, `datefield`, `ccontent` FROM `tablename` WHERE WEEK(`datefield`, 1) > WEEK(now(), 1) - 5 ORDER BY WEEK(`datefield`, 1) DESC";
$w = "";
$result = mysql_query($sql);
while($re = mysql_fetch_array($result)){
if($w != $re["weeknum"]) {
$w = $re["weeknum"];
echo implode(" -- ", aweek($re["datefield"], 1))."<br>";
}
echo $re["ccontent"]."<br>";
}/*
* 功能:取得一周的开始日期和结束日期
* 参数:$gdate 日期,默认为当天,格式:YYYY-MM-DD
* $first 一周以星期一还是星期天开始,0为星期天,1为星期一
* 返回:数组array("开始日期", "结束日期");
* 作者:多菜鸟
* Email: kingerq AT msn.com
* 来源:
*/
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);//返回开始和结束日期
}
?>
这样子应该差不多了。
以mysql数据库函数为例:
$rs = mysql_query("select date,title from tbl_name order by date");
$week = -1;
while($row = mysql_fetch_array($rs)) {
$t = strtotime($row['date']);//取得数据发布的日期
$w = date("W",$t);//数据发布在第几周
if($w != $week) {
$week = $w;
$wd = date("W",$t); //数据发布在周几
if($wd != 0)
$t = strtotime("-$wd day",$t); //本周开始的日期
echo date("m.d",$t)." -- ".date("m.d",strtotime("7 day",$t))."<br>";//输出日期条
}
enho $row['title']."<br>";//输出内容
}
$week = -1;
while($row = mysql_fetch_array($rs)) {
$t = strtotime($row['opr_time']);//取得数据发布的日期
$w = date("W",$t);//数据发布在第几周
echo $w." -- ".$week."<br>";
if($w != $week) {
$week = $w;
echo implode("----",aweek("".$row['opr_time']."",1))."<br>";//输出日期条
}
echo $row['bh']."<br>";//输出内容
}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);//返回开始和结束日期
}