You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用date()函数获取星期数值异常:2018年5月月末值错误排查

问题分析:获取每月最后一天星期数返回值错误

嘿,我发现你的问题出在date()函数的参数使用上啦!

你当前的代码:

$endMonth = date('Y-m-t');
$dayPostition = date('w', $endMonth);

这里的核心问题是:date()函数的第二个参数要求传入Unix时间戳,而你传的是字符串格式的日期(比如2018-05-31)。虽然PHP会尝试自动解析这个字符串,但这种解析并不总是可靠的,这就导致2018年5月最后一天的星期数计算错误——实际5月31日是星期四(对应w的返回值4,w规则是0=周日、1=周一……4=周四),但错误的解析让你得到了3。

正确的实现方式

给你几种靠谱的解决办法:

  • 方法一:把日期字符串转成时间戳
    用strtotime()将$endMonth转换成时间戳后再传入date():

    $endMonth = date('Y-m-t');
    $dayPosition = date('w', strtotime($endMonth));
    
  • 方法二:直接获取当月最后一天的时间戳
    用strtotime()的语义化写法,一步到位:

    $dayPosition = date('w', strtotime('last day of this month'));
    
  • 方法三:使用DateTime类(更推荐)
    DateTime类处理日期时间更健壮,避免字符串解析的坑:

    $date = new DateTime();
    $date->modify('last day of this month');
    $dayPosition = $date->format('w');
    

用以上任意一种方法,2018年5月最后一天的星期数都会正确返回4啦!

内容的提问来源于stack exchange,提问作者Micha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:34:01