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

Antd 5.15.2搭配Dayjs 1.11.10时DatePicker无法设周起始为周一

问题解决:Dayjs 1.11.10 搭配 Antd 5.15.2 DatePicker 周起始异常

问题分析

升级Dayjs到1.11.10后,DatePicker周始终从周日开始,回退到1.11.7恢复正常,核心原因是Dayjs 1.11.8+版本对插件加载顺序、locale配置生效逻辑做了调整,原代码的执行顺序导致weekStart:1的配置未正确生效。

解决方案

1. 调整插件引入与locale配置顺序

原代码先设置locale再扩展插件,导致updateLocale的配置无法覆盖默认值。修正顺序为:先扩展所需插件,再设置locale并更新配置:

import dayjs from "dayjs";
import weekday from "dayjs/plugin/weekday";
import updateLocale from "dayjs/plugin/updateLocale";
import "dayjs/locale/en";

// 第一步:扩展所有需要的插件
dayjs.extend(updateLocale);
dayjs.extend(weekday);

// 第二步:设置全局locale
dayjs.locale("en");

// 第三步:更新locale的周起始配置
dayjs.updateLocale("en", {
    weekStart: 1,
});

2. 确保Antd使用配置后的Dayjs实例

Antd的DatePicker默认使用全局dayjs,但如果项目中有多个dayjs实例,需通过ConfigProvider明确传入配置好的实例,避免使用未配置的默认实例:

import { ConfigProvider } from 'antd';
import dayjs from './path-to-your-dayjs-config'; // 导入上述配置的dayjs

function RootApp() {
  return (
    <ConfigProvider dayjs={dayjs}>
      {/* 你的应用组件树 */}
    </ConfigProvider>
  );
}

3. 备选方案:直接修改locale的原始配置

如果上述方法仍无效,可尝试直接修改en locale的默认weekStart(绕过updateLocale):

import dayjs from "dayjs";
import weekday from "dayjs/plugin/weekday";
import "dayjs/locale/en";

dayjs.extend(weekday);

// 直接修改en locale的配置
const enLocale = require('dayjs/locale/en');
enLocale.weekStart = 1;
dayjs.locale(enLocale);

验证逻辑

修改后,可通过以下代码确认配置是否生效:

console.log(dayjs().startOf('week').format('YYYY-MM-DD'));
// 输出应为周一的日期,而非周日

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 05:15:02