用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(); // 输出今天是本月第几周

 

来源链接:https://www.cnblogs.com/anniu1122/p/18650644

© 版权声明
THE END
支持一下吧
点赞15 分享
评论 抢沙发
头像
请文明发言!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容