gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 21:05:27 24 4
gpt4 key购买 nike

我有一个随机日期数组(不是来自 MySQL)。我需要按周将它们分组为第 1 周、第 2 周,依此类推直至第 5 周。

我拥有的是这样的:

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

我需要一个通过提供日期来获取该月的周数的函数。

我知道我可以通过这样做获得周数 日期('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;

最佳答案

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

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

我们还需要确保正确处理上一年的“重叠”周 - 如果 1 月 1 日位于第 52 或 53 周,则应将其计为第 0 周。以类似的方式,如果 12 月的某一天是在明年的第一周,应该算作 53。(此答案的先前版本未能正确执行此操作。)

<?php

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

function weekOfYear($date) {
$weekOfYear = intval(date("W", $date));
if (date('n', $date) == "1" && $weekOfYear > 51) {
// It's the last week of the previos year.
return 0;
}
else if (date('n', $date) == "12" && $weekOfYear == 1) {
// It's the first week of the next year.
return 53;
}
else {
// It's a "normal" week.
return $weekOfYear;
}
}

// A few test cases.
echo weekOfMonth(strtotime("2020-04-12")) . " "; // 2
echo weekOfMonth(strtotime("2020-12-31")) . " "; // 5
echo weekOfMonth(strtotime("2020-01-02")) . " "; // 1
echo weekOfMonth(strtotime("2021-01-28")) . " "; // 5
echo weekOfMonth(strtotime("2018-12-31")) . " "; // 6

要获取从星期日开始的周,只需将 date("W", ...) 替换为 strftime("%U", ...) 即可。

关于php - 从 PHP 中的日期获取月份中的周数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36854212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com