PHP 和 MySQL 计算某天是当年的第几周
PHP 直接使用 date()
即可:
// after php 4.1.0
$w = date('W'); // 当天
$w1 = date('W', strtotime('2020-07-28')); // 某天
MySQL 某天
WEEK(date_add('2020-07-28',interval 6 day),2);
或者当天
weekofyear(curdate())
经多组日期数据测试,PHP 和 MySQL 计算结果一致,可以放心使用。
跨年周数问题
2019 年 12 月 30 日和 12 月 31 日会计算在 2020 年的第一周里,2020 年的最后一周会加上 2021 年的 1 月 1 日、1 月 2 日、1 月 3 日。这一点说明周数计算并不是从一年的第一天,就是 1 月 1 号开始计算,而是累计的结果。
但这个问题并不影响,在 PHP 和 MySQL 中计算方法应该是一致的,结果也一致,不需要自定义适配函数。