获取当天是本月的第几周

获取当天是本月的第几周,顺便了解令人困惑的 strtotime

strtotime(“$firstDay + 1 month -1 day”) 这样的写法会有问题,大家可以去鸟哥博客看看

令人困惑的strtotime

<?php
/**
 * 获取当天是本月的第几周
 * 
 * @return int
 * @author Henry
 */
 public function getWeek(): int
 {
     $todayW = date('W', strtotime('now')); //获取当前周数
     //$eomW = date('W', strtotime("$firstDay + 1 month -1 day")); 写法有问题
     $eomW = date('W', strtotime('last day of')); //获取月尾周数
     $weekSum = floor(date('t') / 7); //月份总天数 / 7 = 本月总周数

    //本月总周数 - (本月尾周数 - 当前周数) + 1
    $week = intval(($weekSum - ($eomW - $todayW)) + 1);

    return $week;
 }

/*
 * 写法不够简洁 v1.0
public function getWeekV1(): int
{
    $totalDay = date('t'); //月份总天数
    $today = date('Y-m-d'); //月份中的第几天
    $todayW = date('W', strtotime($today)); //获取当前周数
    $firstDay = date('Y-m-01'); //本月第一天

    $eomW = date('W', strtotime("$firstDay + 1 month -1 day")); //这个月最后一天的周数
    $weekSum = floor($totalDay / 7); //本月总周数
    //本月总周数 - (本月尾周数 - 当前周数) + 1
    $week = intval(($weekSum - ($eomW - $todayW)) + 1);
    return $week;
}
*/
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

有封装好的包,好像是这个方法。

$dt = Carbon::parse('2012-10-5 23:26:11.123789');
dd($dt->weekOfMonth);
2年前 评论
华贤 (楼主) 2年前
小李世界 2年前

无语…………

ceil(date('d')/7);
2年前 评论
Imuyu 2年前
华贤 (楼主) 2年前
lidongyoo (作者) 2年前
Imuyu 2年前
lidongyoo (作者) 2年前
Imuyu 2年前
lidongyoo (作者) 2年前

看了半天愣是没看明白,能写成这样也是不容易了。。~~

2年前 评论

一看到时间处理的就先查查 Carbon怎么实现的 官网

2年前 评论

请问怎么获取本月第一周到最后一周的时间呢? 比如

[
    0=>"6.28~7.4",
    1=>"7.5~7.11",
    2=>"7.12~7.19",
    3=>"7.20~7.25",
]
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!