不要以为我能在这个论坛上找到这个答案。
如何获取每个月的第一周数字,其中月份从星期一开始。这个月第一周是36怎么得到?有这个代码。但是不要工作。
//get first week number in month
$month = 9;
$year = 2018;
$day = 1;
$firstday = new DateTime("$year-$month-1");
$dow = (int)$firstday->format('w');
$firstday->add(new DateInterval('P' . ((8 - $dow) % 7) . 'D'));
$weeknumber = $firstday->format('W');
echo $weeknumber ;
我认为这段代码会做你想要的。它首先为该月的第一天创建一个DateTime
对象,然后将该日期向前移动以使其成为星期一。最后,它使用format('W')
打印一年中的一周。
编辑
更新了代码以打印全年的第一个星期一和周数
$year = 2018;
echo "Month | First Monday | Weekn";
for ($month = 1; $month <= 12; $month++) {
$firstday = DateTime::createFromFormat('Y-n-j', "$year-$month-1");
$dow = (int)$firstday->format('w');
// update to a monday (day 1)
$firstday->add(new DateInterval('P' . ((8 - $dow) % 7) . 'D'));
echo sprintf("%5d | %s | %4dn", $month, $firstday->format('Y-m-d'), $firstday->format('W'));
}
输出:
Month | First Monday | Week
1 | 2018-01-01 | 1
2 | 2018-02-05 | 6
3 | 2018-03-05 | 10
4 | 2018-04-02 | 14
5 | 2018-05-07 | 19
6 | 2018-06-04 | 23
7 | 2018-07-02 | 27
8 | 2018-08-06 | 32
9 | 2018-09-03 | 36
10 | 2018-10-01 | 40
11 | 2018-11-05 | 45
12 | 2018-12-03 | 49