最推荐方案是format设为'yyyy-MM-dd 星期N',Layui自动替换星期;2.9.9+可用formatToDisplay分离显示与值;自定义需用done回调;注意周日为0,国内使用需手动对齐计算。
laydate 的 format 属性直接加 “星期N” 最省事
不用改源码、不依赖版本,只要在 format 里写上 星期n,layui 就会自动把选中日期对应的星期(0=周日,1=周一…6=周六)替换进去。这是最轻量、最推荐的方案。
注意点:
-
星期N必须和yyyy-MM-dd这类格式连用,单独写星期N不生效 -
done回调里的date.week值和页面显示一致,可直接用于逻辑判断 - 如果用户清空输入框再手动输入日期,
星期N不会自动补全——它只在选择器弹出、点击日期后触发渲染时生效
示例代码:
layui.use('laydate', function(){
var laydate = layui.laydate;
laydate.render({
elem: '#test',
format: 'yyyy-MM-dd 星期N',
value: new Date() // 确保初始化时也带星期
});
});需要提交纯日期但显示带星期?用 formatToDisplay
这个配置项从 Layui 2.9.9 开始支持,专为「显示和值分离」设计。表单提交还是 2026-04-27,但用户看到的是 2026-04-27 周一。
关键细节:
-
format决定实际值格式(必须是标准日期字符串),formatToDisplay只影响 input 框内文字 - 函数参数
value是字符串,不是Date对象,要先new Date(value)才能调getDay() - 中文星期数组建议写成
['周日','周一','周二','周三','周四','周五','周六'],避免date.getDay()返回 0 时错位
示例代码:
laydate.render({
elem: '#test',
format: 'yyyy-MM-dd',
formatToDisplay: function(value) {
if (!value) return '';
var d = new Date(value);
var weeks = ['周日','周一','周二','周三','周四','周五','周六'];
return value + ' ' + weeks[d.getDay()];
}
});想自定义星期显示文字或加图标?走 done 回调 + DOM 操作
当 formatToDisplay 不够用(比如要加 ? 表情、同步更新旁边提示文案、或兼容老版本 Layui),就靠 done 回调手动改 input 值或旁侧元素。
实操要点:
-
done在每次选中、清空、甚至键盘输入后都会触发,所以得加if (value)判断是否真有日期 - 别直接改
elem.value,要用 jQuery 或原生inputEl.value = ...,否则 Layui 内部状态可能不同步 - 如果同时用了
range: true,value是形如"2026-04-20 ~ 2026-04-26"的字符串,需先拆分再分别处理
示例(仅更新 input 文字):
laydate.render({
elem: '#test',
format: 'yyyy-MM-dd',
done: function(value, date) {
if (!value) return;
var weeks = ['周日','周一','周二','周三','周四','周五','周六'];
var display = value + ' ' + weeks[date.week];
this.elem.value = display; // this 指向当前实例,安全可靠
}
});别踩坑:周起始日默认是周日,国内习惯要手动对齐
Layui 内部所有 getDay() 计算都以周日为第 0 天,但你在显示“本周一”或做范围限制时,若没意识到这点,很容易算错一天。
典型表现:
- 用
new Date().getDay() === 0判断今天是不是周日,是对的;但想取“本周一”,就得按today.getDate() - (day === 0 ? 6 : day - 1)算,不能简单减 1 - 如果用
format: 'yyyy-MM-dd EEE',Layui 会按自己逻辑转星期缩写,但底层仍是周日起点,和你脑内“周一=1”的直觉不一致 - 修改源码强行换起始日(比如改
weeks数组顺序)风险高,容易被升级覆盖,优先用 JS 层计算兜底
当前时间是 2026年4月27日,星期一,你可以拿它验算:今天 getDay() 返回 1,星期N 显示应为“周一”,若显示“周二”就说明某处偏移错了。


















