我希望获得帮助以确定一周中的特定日期是否属于该月的第1周,第2周,第3周或第5周。下面的代码从星期一到星期六开始返回0-7,但这不是我想要的,而是我想能够确定,例如今天是19/09/2016,这是本月的第3周。我需要帮助。
function getWeekday($date){
return date('w',strtotime($date));
}
答案 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;
这就是它的全部内容。