帅哥 我今天写一个数据 和你问题问题有点像! IF OBJECT_ID('TEMPDB..#')IS NOT NULL DROP TABLE # GO SELECT MIN(date) AS week_min,MAX(date) AS week_max,[WEEK]INTO # FROM (SELECT DATEADD(day,number,'2009-10-01') AS date, DATEPART(week,DATEADD(day,number,'2009-10-01')) AS week FROM master.dbo.spt_values WHERE type = 'p' AND number <=31 AND MONTH(DATEADD(day,number,'2009-10-01'))=10)T GROUP BY [WEEK] SELECT week_min, week_max, (select count(*) from # where [week]<=t.[week])[week] from # t /* week_min week_max week ----------------------- ----------------------- ----------- 2009-10-01 00:00:00.000 2009-10-04 00:00:00.000 1 2009-10-05 00:00:00.000 2009-10-11 00:00:00.000 2 2009-10-12 00:00:00.000 2009-10-18 00:00:00.000 3 2009-10-19 00:00:00.000 2009-10-25 00:00:00.000 4 2009-10-26 00:00:00.000 2009-10-31 00:00:00.000 5(5 個資料列受到影響) */
c语言的,你改成php就行了。
得到某一天是星期几,再算星期日和星期一就容易了。
int DayOfWeek(int y, int m, int d)
{
static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
y -= m < 3; //m小于3时y减1
return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}
echo date("N",strtotime("2009-10-01"));
$time = strtotime( $time);
$y = date('Y', $time);
$w = date('W', $time);$year = strtotime("{$y}-1-1 00:00:00");
echo date('Y-m-d H:i:s', $year+$w*7*24*60*60);
$time = strtotime( $time);echo date("Y-m-d H:i:s", strtotime("this Monday", $time));
引用楼上的想法 在用控制流语句
if(星期一)
{
echo “星期一是:”values,“星期日是:”values-6;
}
{
if(!$date) $date = date('Y-m-d');
$td = date('w',strtotime($date));
if($td == 0)
{
$w[] = date('Y-m-d',strtotime($date.' -6 day'));
$w[] = $date;
}
else
{
$dd = $td - 1;
$fd = 7 - $td;
$w[] = date('Y-m-d',strtotime($date." -{$dd} day"));
$w[] = date('Y-m-d',strtotime($date." +{$fd} day"));
}
return $w;
}
print_r(getWeekSe());
function a()
{
$d=getdate();
$day=$d[mday];//得出今天是几号
$week=$d[weekday];//得出今天是星期几
switch($week)
{
case:"monday"
echo "这周的星期一是".$d."星期日是".$d-6;
break;
case:"Tuesday"
echo "这周的星期一是".$d-1."星期日是".$d-5;
break;
.....
....
}
}
哈哈刚学PHP 下面:echo "这周的星期一是".$d-1。中的$d-1 不知道可不可以挖。思路是这样
<?php
class a
{
function a()
{
$d=getdate();
$day=$d[mday];//得出今天是几号$week=$d[weekday];//得出今天是星期几
//echo $week;
switch($week)
{
case"monday";
$x=$day;
$y=$day-6;
echo "这周的星期一是".$x."星期日是".$y;
break;
case"Tuesday";
$x=$day-1;
$y=$day-5;
echo"这周的星期一是".$x."星期日是".$y;
break;
case"Friday";
$x=$day-2;
$y=$day-4;
echo"这周的星期一是".$x."星期日是".$y;
break;
}
}
}
$c=new a;
?>不好意思 刚才没测试
echo 'Monday :' , getWeekDate($date, 1) , PHP_EOL;
//...
echo 'Saturday :' , getWeekDate($date, 6) , PHP_EOL;function getWeekDate($t, $offset = 0, $format = 'Y-m-d') {
$t = strtotime($t);
return date($format, $t - (date('w', $t) - $offset) * 86400);
}
$time = strtotime( $time);
echo date("Y-m-d", strtotime("last Monday", $time));
echo date("Y-m-d", strtotime("this Sunday", $time));给5分吧
$t = strtotime($t);
echo date($format, $t - (date('w', $t) - $offset) * 86400);
}
$date = '2009-10-10';
echo '上周日:' , getWeekDate($date, 0) , PHP_EOL;
echo '本周一 :' , getWeekDate($date, 1) , PHP_EOL;//...
echo '本周日 :' , getWeekDate($date, 7) , PHP_EOL; 余下的15分都给你了
IF OBJECT_ID('TEMPDB..#')IS NOT NULL DROP TABLE #
GO
SELECT MIN(date) AS week_min,MAX(date) AS week_max,[WEEK]INTO # FROM
(SELECT DATEADD(day,number,'2009-10-01') AS date,
DATEPART(week,DATEADD(day,number,'2009-10-01')) AS week
FROM master.dbo.spt_values
WHERE type = 'p' AND number <=31 AND MONTH(DATEADD(day,number,'2009-10-01'))=10)T
GROUP BY [WEEK]
SELECT week_min,
week_max,
(select count(*) from # where [week]<=t.[week])[week]
from # t
/*
week_min week_max week
----------------------- ----------------------- -----------
2009-10-01 00:00:00.000 2009-10-04 00:00:00.000 1
2009-10-05 00:00:00.000 2009-10-11 00:00:00.000 2
2009-10-12 00:00:00.000 2009-10-18 00:00:00.000 3
2009-10-19 00:00:00.000 2009-10-25 00:00:00.000 4
2009-10-26 00:00:00.000 2009-10-31 00:00:00.000 5(5 個資料列受到影響)
*/