php问题,求高手!

小鱼n_n 2016-08-15 02:01:32
已知两个日期:如:2016-08-19,2016-09-14,
在这两个日期之内,每周(如周三,周五)有课,现在可知,上课日期分别是:
2016-08-19,2016-08-24,2016-08-26,2016-08-31,2016-09-02,2016-09-07,2016-09-09,2016-09-14,
但以上日期是五周。

求大神:如何根据以上内容,分别给上面日期加上day和week?
如下:
2016-08-19 (day=1,week=1)(第1周第1天)
2016-08-24 (day=1,week=2)(第2周第1天)
2016-08-26 (day=2,week=2)(第2周第2天)
2016-08-31 (day=1,week=3)(第3周第1天)
2016-09-02 (day=2,week=3)(第3周第2天)
2016-09-07 (day=1,week=4)(第4周第1天)
2016-09-09 (day=2,week=4)(第4周第2天)
2016-09-14 (day=1,week=5)(第5周第1天)
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小鱼n_n 2016-10-31
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
有区别吗?
$d1 = "2016-12-19";
$d2 = "2017-01-14";
$t1 = strtotime($d1);
$t2 = strtotime($d2);
$week = $day = 1;
while($t1 <= $t2) {
  $w = date('w', $t1);
  if(in_array($w, array(3,5))) {
    printf("%s(day=%d,week=%d)(第%d周第%d天)\n", date('Y-m-d', $t1), $day, $week, $day, $week);
    $day++;
  }
  $t1 = strtotime('1 day', $t1);
  if($w == 0) {
    $week++;
    $day = 1;
  }
}
2016-12-21(day=1,week=1)(第1周第1天)
2016-12-23(day=2,week=1)(第2周第1天)
2016-12-28(day=1,week=2)(第1周第2天)
2016-12-30(day=2,week=2)(第2周第2天)
2017-01-04(day=1,week=3)(第1周第3天)
2017-01-06(day=2,week=3)(第2周第3天)
2017-01-11(day=1,week=4)(第1周第4天)
2017-01-13(day=2,week=4)(第2周第4天)

呃,看错了,谢谢!!!
xuzuning 2016-10-31
  • 打赏
  • 举报
回复
有区别吗?
$d1 = "2016-12-19";
$d2 = "2017-01-14";
$t1 = strtotime($d1);
$t2 = strtotime($d2);
$week = $day = 1;
while($t1 <= $t2) {
  $w = date('w', $t1);
  if(in_array($w, array(3,5))) {
    printf("%s(day=%d,week=%d)(第%d周第%d天)\n", date('Y-m-d', $t1), $day, $week, $day, $week);
    $day++;
  }
  $t1 = strtotime('1 day', $t1);
  if($w == 0) {
    $week++;
    $day = 1;
  }
}
2016-12-21(day=1,week=1)(第1周第1天)
2016-12-23(day=2,week=1)(第2周第1天)
2016-12-28(day=1,week=2)(第1周第2天)
2016-12-30(day=2,week=2)(第2周第2天)
2017-01-04(day=1,week=3)(第1周第3天)
2017-01-06(day=2,week=3)(第2周第3天)
2017-01-11(day=1,week=4)(第1周第4天)
2017-01-13(day=2,week=4)(第2周第4天)

小鱼n_n 2016-10-31
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
失误 if(in_array($w, array(2,5))) { 应为 if(in_array($w, array(3,5))) {
你好!如果两个日期是跨年的怎么办?比如开始日期是2016-11-01,结束日期是2017-1-19
小鱼n_n 2016-08-15
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
失误 if(in_array($w, array(2,5))) { 应为 if(in_array($w, array(3,5))) {
谢谢~~
小鱼n_n 2016-08-15
  • 打赏
  • 举报
回复
引用 2 楼 jordan102 的回复:
$start = '2016-08-19';
$end = '2016-09-14';
$s = date("W",strtotime($start));
while($start <= $end){
	$d = date("N", strtotime($start));
	if($d == 3 || $d == 5){
		$w = date("W",strtotime($start)) % $s + 1;
		$arr[$w][] = $start;
	}
	$start = date("Y-m-d", strtotime("$start +1 days"));
}
print_r($arr);
Array ( [1] => Array ( [0] => 2016-08-19 ) [2] => Array ( [0] => 2016-08-24 [1] => 2016-08-26 ) [3] => Array ( [0] => 2016-08-31 [1] => 2016-09-02 ) [4] => Array ( [0] => 2016-09-07 [1] => 2016-09-09 ) [5] => Array ( [0] => 2016-09-14 ) )
谢谢!
xuzuning 2016-08-15
  • 打赏
  • 举报
回复
失误 if(in_array($w, array(2,5))) { 应为 if(in_array($w, array(3,5))) {
xuzuning 2016-08-15
  • 打赏
  • 举报
回复
$d1 = "2016-08-19";
$d2 = "2016-09-14";
$t1 = strtotime($d1);
$t2 = strtotime($d2);
$week = $day = 1;
while($t1 <= $t2) {
  $w = date('w', $t1);
  if(in_array($w, array(2,5))) {
    printf("%s(day=%d,week=%d)(第%d周第%d天)\n", date('Y-m-d', $t1), $day, $week, $day, $week);
    $day++;
  }
  $t1 = strtotime('1 day', $t1);
  if($w == 0) {
    $week++;
    $day = 1;
  }
}
2016-08-19(day=1,week=1)(第1周第1天)
2016-08-23(day=1,week=2)(第1周第2天)
2016-08-26(day=2,week=2)(第2周第2天)
2016-08-30(day=1,week=3)(第1周第3天)
2016-09-02(day=2,week=3)(第2周第3天)
2016-09-06(day=1,week=4)(第1周第4天)
2016-09-09(day=2,week=4)(第2周第4天)
2016-09-13(day=1,week=5)(第1周第5天)

一起混吧 2016-08-15
  • 打赏
  • 举报
回复
$start = '2016-08-19';
$end = '2016-09-14';
$s = date("W",strtotime($start));
while($start <= $end){
	$d = date("N", strtotime($start));
	if($d == 3 || $d == 5){
		$w = date("W",strtotime($start)) % $s + 1;
		$arr[$w][] = $start;
	}
	$start = date("Y-m-d", strtotime("$start +1 days"));
}
print_r($arr);
Array ( [1] => Array ( [0] => 2016-08-19 ) [2] => Array ( [0] => 2016-08-24 [1] => 2016-08-26 ) [3] => Array ( [0] => 2016-08-31 [1] => 2016-09-02 ) [4] => Array ( [0] => 2016-09-07 [1] => 2016-09-09 ) [5] => Array ( [0] => 2016-09-14 ) )
小鱼n_n 2016-08-15
  • 打赏
  • 举报
回复
求大神~~求高手~~

21,887

社区成员

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

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