gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:07:30 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/32615861/

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