laydate默认显示英文,需在render配置中显式设置lang: 'zh'才能切为中文;lang: 'zh-CN'等无效,且不支持动态修改,必须销毁后重渲染。

layui 日期组件默认使用浏览器 locale(通常是 en-US),所以即使页面是中文环境,laydate 的按钮文字、星期、月份等仍显示英文。要切为纯中文,不能只改 CSS 或 DOM 文本——必须显式传入中文语言配置。
laydate.render() 中必须设置 lang: 'zh'
这是最直接有效的做法。laydate 内置了 zh 语言包,但不会自动启用,需手动指定:
-
lang: 'zh'是唯一生效的取值,'zh-CN'或'zh-cn'均无效 - 该参数必须放在
laydate.render()的配置对象顶层,和elem、format同级 - 不支持全局设置,每个实例都得单独配;若用
laydate.now()或独立调用,也需传{lang: 'zh'}
示例:
layui.use('laydate', function(){
var laydate = layui.laydate;
laydate.render({
elem: '#test1',
format: 'yyyy-MM-dd',
lang: 'zh' // ← 关键,缺它就是英文
});
});
为什么 lang: 'zh' 不生效?常见漏点
配置写了却还是英文,大概率踩了这几个坑:
- 用了
lang: 'zh-CN'—— laydate 只认'zh',其他值全部回退到英文 - 在
layui.config({})里设了base或version,但没加载laydate.js对应的语言模块(其实不用额外引入,zh已内置) - 页面中多个
laydate.render()调用,只改了其中一个,其余仍用默认 - 通过
laydate.destroy()销毁后重新渲染,但新调用没带lang: 'zh'
星期/月份仍是英文?检查 format 和 lang 是否冲突
即使 lang: 'zh' 正确,如果 format 里用了 MMM 或 EEEE 这类 ICU 格式符,laydate 会忽略 lang 直接走浏览器原生 Intl.DateTimeFormat,结果仍是英文。
- laydate 支持的 format 符只有:
yyyy、MM、dd、HH、mm、ss等基础符号 - 避免使用
MMM(如 “Jan”)、EEEE(如 “Monday”)——这些不在 laydate 控制范围内 - 要显示中文星期,只能靠自定义
ready或change回调 + 手动替换 DOM,不推荐
动态切换语言时日期组件不更新?
laydate 实例创建后,lang 不可动态修改。切换语言必须:
- 先调用
laydate.destroy(原始实例的 index)销毁旧实例 - 再用新语言配置重新
laydate.render() - 不要试图复用同一个
elem并只改配置——laydate 不支持热更新lang
真正容易被忽略的是:laydate 的 lang 是单次绑定的硬编码行为,不是响应式变量。一旦渲染完成,它的语言就固定了,连 window.navigator.language 改变都不会触发重绘。


















