用PHP实现获取今天是本月第几周 【复制代码之血案】

球球了,复制别人的代码一定要做单元测试!!!跑了大半年的代码,2024年12月30日凌晨崩了!!!心态都炸了!!!

 

代码参考链接:https://www.php.cn/faq/502532.html

有bug啊 有bug啊

下面为执行正常示例和异常示例

<?php
$firstDayThisMonth = date('2024-11-01');
$firstWeekThisMonth = date('W', strtotime($firstDayThisMonth));
$currentWeek = date('W', strtotime('2024-11-30')) - (int)$firstWeekThisMonth + 1;
echo $currentWeek;

// 执行结果 5
<?php
$firstDayThisMonth = date('2024-12-01');
$firstWeekThisMonth = date('W', strtotime($firstDayThisMonth));
$currentWeek = date('W', strtotime('2024-12-30')) - (int)$firstWeekThisMonth + 1;
echo $currentWeek;

// 执行结果 -46

 

过了12月30的0点以后,直接崩了。。。😂 复制代码引发的bug,还不如自己写的日期计算

 

更离谱的是 文心一言 ai 回答 ,2024年12月1日竟然回答是周六?可现实是周日啊。。。

真是离谱啊。。。

看下 Claude 的回答

 

 

建议代码 示例1

<?php
function getWeekOfMonth($date = null) {
    $dt = $date ? new DateTime($date) : new DateTime();
    
    // 获取当月1号的日期对象
    $firstDayOfMonth = new DateTime($dt->format('Y-m-01'));
    
    // 计算第一天的偏移量
    $offset = $firstDayOfMonth->format('w');
    
    // 计算当前日期在本月的天数
    $dayOfMonth = $dt->format('j');
    
    return ceil(($dayOfMonth + $offset) / 7);
}

// 使用示例
echo getWeekOfMonth(); // 输出今天是本月第几周

建议代码 示例2

<?php
function getWeekOfMonth($date = null) {
    $date = $date ?: date('Y-m-d');
    
    // 获取当前日期是当月第几天
    $dayOfMonth = date('j', strtotime($date));
    
    // 获取当月1号是星期几(0是星期天,1-6是星期一到星期六)
    $firstDayOfMonth = date('w', strtotime(date('Y-m-01', strtotime($date))));
    
    // 计算第几周
    $weekOfMonth = ceil(($dayOfMonth + $firstDayOfMonth) / 7);
    
    return $weekOfMonth;
}

// 使用示例
echo getWeekOfMonth(); // 输出今天是本月第几周

 

posted @   露娜喵喵  阅读(44)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
· 开源的 DeepSeek-R1「GitHub 热点速览」
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
点击右上角即可分享
微信分享提示