PHP 每月第一周编号

  • 本文关键字:一周 编号 PHP php
  • 更新时间 :
  • 英文 :


不要以为我能在这个论坛上找到这个答案。

如何获取每个月的第一周数字,其中月份从星期一开始。这个月第一周是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

最新更新