一尘不染

从PHP中获取日期中月份的周数?

php

我有一个随机日期数组(不是来自MySQL)。我需要按一周将它们分组为Week1,Week2,依此类推,直到Week5。

我所拥有的是:

$dates = array('2015-09-01','2015-09-05','2015-09-06','2015-09-15','2015-09-17');

我需要的是一个通过提供日期来获取月份的星期数的功能。

我知道可以通过执行操作获得 date('W',strtotime('2015-09-01'));
周号,但是本周号是年份(1-52)之间的数字,但是我只需要一个月的周号,例如,在2015年9月有5周:

  • 第1周=第1至第5
  • 第2周= 6日至12日
  • 第3周= 13日至19日
  • 第4周= 20日至26日
  • 第5周= 27日至30日

我应该能够通过提供日期来获得Week1

$weekNumber = getWeekNumber('2015-09-01') //output 1;
$weekNumber = getWeekNumber('2015-09-17') //output 3;

阅读 637

收藏
2020-05-29

共1个答案

一尘不染

我认为这种关系应该是正确的并且派上用场:

Week of the month = Week of the year - Week of the year of first day of month + 1

在PHP中实现,您将获得以下信息:

function weekOfMonth($date) {
    //Get the first day of the month.
    $firstOfMonth = strtotime(date("Y-m-01", $date));
    //Apply above formula.
    return intval(date("W", $date)) - intval(date("W", $firstOfMonth)) + 1;
}

要获得从星期日开始的几周,只需将都替换date("W", ...)strftime("%U", ...)

2020-05-29