用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(); // 输出今天是本月第几周
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
· 开源的 DeepSeek-R1「GitHub 热点速览」
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)