使用PHP确定日期(月)的周数

时间:2016-09-19 06:52:12

标签: php mysql

我希望获得帮助以确定一周中的特定日期是否属于该月的第1周,第2周,第3周或第5周。下面的代码从星期一到星期六开始返回0-7,但这不是我想要的,而是我想能够确定,例如今天是19/09/2016,这是本月的第3周。我需要帮助。

function getWeekday($date){
return date('w',strtotime($date));
}

3 个答案:

答案 0 :(得分:8)

你需要的只是

ceil(date('d')/7);

所以你的功能看起来像

function getWeekday($date){
  return ceil(date('d',strtotime($date))/7);
}

<强> Demo

即使要求有点奇怪。 一周中的每周不是明确定义的事情,但根据您对各种答案的评论,您只需要查看第1周的日期是否在该月的前7天内。 2为接下来的7,3为接下来的7,4为接下来的7和5为剩余。

<强>输出

D   W
1   1
2   1
3   1
4   1
5   1
6   1
7   1
8   2
9   2
10  2
11  2
12  2
13  2
14  2
15  3
16  3
17  3
18  3
19  3
20  3
21  3
22  4
23  4
24  4
25  4
26  4
27  4
28  4
29  5
30  5
31  5

旧答案

简单!你需要一个大写W,而不是小写的大写。

  

<强> w ^

     

ISO-8601周数,周一从周一开始(在PHP 4.1.0中添加)

return date('W',strtotime($date));

您正在使用的小写字母是

  

星期几的数字表示

<强> Manual

答案 1 :(得分:1)

这应该有效:

 echo date('W', strtotime($date)) - date('W', strtotime("first day of this month")) + 1;

答案 2 :(得分:1)

这对于DateTime对象来说非常简单,或者更确切地说是DateTimeImmutable。

// Immutable so we don't need to clone the object.
$date = new DateTimeImmutable ($date, $dtz);

// We need to find out which week number the month starts at.
$start = $date->modify ("first day of this month");

// The first week - the current week + 1 == The week in the month.
$monthWeek = $date->format ("W") - $start->format ("W") + 1;

这就是它的全部内容。