layui日期选择器通过weekstart参数设置周起始日,weekstart:0为周日开头,weekstart:1为周一开头(默认),仅对type:'date'或'month'生效,需layui 2.8.0+版本支持,且不影响业务逻辑计算。

layui 日期选择器怎么改周起始日(weekStart)
layui 的 laydate 默认从周一开始(中国习惯),但如果你需要显示为周日开头(如匹配 ISO 周或某些海外需求),不能靠 CSS 或 DOM 操作硬改,得在初始化时用 weekStart 参数控制。
这个参数只在 laydate.render() 中生效,且仅对年月日类型(type: 'date' 或 'month')有效;时间类型('time')不支持。
-
weekStart: 0→ 周日为首列 -
weekStart: 1→ 周一为首列(默认值,可省略)
示例:
laydate.render({
elem: '#test1',
weekStart: 0 // 从周日开始排布
});
为什么设了 weekStart 却没生效?
常见失效原因有三个:
- 用了
type: 'datetime'或'time'—— 这两种类型不读取weekStart,必须是'date'或'month' - 重复调用
laydate.render()初始化同一个元素,后一次没带weekStart,覆盖了前一次设置 - layui 版本太低:
weekStart是 2.8.0+ 才加入的,老版本(如 2.5.x)压根不识别该参数,会静默忽略
检查方式:打开浏览器控制台,执行 laydate.v 看版本号。
weekStart 对星期文案和逻辑有没有影响?
没有。它只改变日历表格的列顺序,不影响:
- 返回的日期对象(
new Date())、格式化字符串(value) - 回调函数中
date对象的weekday(周几)值:仍是 0(周日)~ 6(周六) - 禁用日期(
disabledDate)、最小最大日期等逻辑判断
换句话说:weekStart 是纯展示层调整,不参与任何业务计算。
如果项目里多处用到 laydate,怎么统一设成周日开头?
没法全局配置,每个 render() 调用都得显式传参。但可以封装一层:
function renderDate(elem, options = {}) {
return laydate.render(Object.assign({
type: 'date',
weekStart: 0
}, options, { elem }));
}
// 后续调用
renderDate('#start', { format: 'yyyy-MM-dd' });
renderDate('#end', { format: 'yyyy/MM/dd' });
注意:别在封装里写死 elem,否则多次调用会冲突;Object.assign 保证用户传入的 weekStart 可覆盖默认值。
真正容易被忽略的是版本兼容性——很多团队还在用 2.6.x 的 layui,升级前务必确认 weekStart 是否可用,否则白调参数。











