AngularJS 1.5中datetime-local输入框默认值与格式设置问题
解决AngularJS 1.5中datetime-local输入框显示秒数的问题
嗨,我刚好碰到过类似的问题,给你捋捋怎么解决~
你遇到的问题本质是:Date.now()生成的时间包含秒和毫秒,而datetime-local输入框会根据绑定的Date对象的完整时间信息来渲染,哪怕你没特意设置秒数,它也会默认显示出来。
下面是两种靠谱的解决办法:
方法一:手动重置秒和毫秒
直接在组件里创建Date对象时,把秒和毫秒强制设为0,这样输入框就只会展示到分钟级别了:
// 新建当前时间的Date对象 const today = new Date(); // 重置秒和毫秒为0 today.setSeconds(0); today.setMilliseconds(0); // 赋值给你的绑定变量 this.sampleDate = { value: today };
你的HTML绑定不需要改动,依然用:
<input type="datetime-local" ng-model="$ctrl.sampleDate.value">
方法二:用AngularJS的日期过滤器辅助处理
如果你习惯用Angular的工具,也可以借助$filter服务先把时间格式化成yyyy-MM-ddTHH:mm的字符串,再转成Date对象(不过方法一更直接):
// 注入$filter服务到组件里 constructor($filter) { this.$filter = $filter; } $onInit() { const formattedDateStr = this.$filter('date')(new Date(), "yyyy-MM-ddTHH:mm"); this.sampleDate = { value: new Date(formattedDateStr) }; }
补充说明
大部分现代浏览器会自动识别Date对象中秒为0的情况,自动隐藏秒数部分。如果还是有问题,可以检查一下浏览器对datetime-local的支持(不过AngularJS 1.5的使用场景里,主流浏览器都没问题)。
内容的提问来源于stack exchange,提问作者Ososmm
相关产品推荐
相关产品推荐

