SAPUI5 DateTimePicker自定义显示格式不生效问题咨询
解决SAPUI5 DateTimePicker自定义displayFormat不生效的问题
我来帮你搞定这个DateTimePicker格式显示异常的问题!你遇到的情况是控件没有应用预设的displayFormat,反而显示了Date对象默认的toString格式,核心原因是你直接给模型绑定的StartTime赋值了Date对象,而控件的valueFormat指定的是字符串格式,两者不匹配导致格式解析失败。
问题根源
你的DateTimePicker配置里,valueFormat设为了"yyyy-MM-dd HH:mm",这意味着控件期望绑定的是符合这个格式的字符串值。但你在_onRouteMatched里直接赋值了new Date()(一个Date对象),此时控件无法正确识别这个值并应用displayFormat,只能调用Date对象的默认toString方法,所以显示出类似Thu Apr 26 2018...的格式。
解决方案:将Date对象转为符合valueFormat的字符串
我们需要用SAPUI5自带的DateFormat工具,把当前日期时间转成和valueFormat一致的字符串,再赋值给模型。
步骤1:引入DateFormat工具
在你的控制器定义里,引入sap/ui/core/format/DateFormat:
sap.ui.define([ "sap/ui/core/mvc/Controller", "sap/ui/core/format/DateFormat" // 新增这个依赖 ], function(Controller, DateFormat) { "use strict"; return Controller.extend("your.controller.namespace", { // 控制器方法 }); });
步骤2:修改_onRouteMatched方法
在路由匹配事件里,格式化当前日期为指定字符串格式后再赋值:
_onRouteMatched: function(oEvent) { // 创建与valueFormat匹配的日期格式化实例 var oDateTimeFormatter = DateFormat.getDateTimeInstance({ pattern: "yyyy-MM-dd HH:mm" // 必须和控件的valueFormat完全一致 }); // 将当前Date对象转为符合格式的字符串 var sFormattedCurrentTime = oDateTimeFormatter.format(new Date()); this.oModelCurrent.setProperty("/", { Name: "", StartTime: sFormattedCurrentTime, // 这里用格式化后的字符串替代Date对象 Duration: "30", ShuntReason: "", }); }
额外说明
- 确保你的
oModelCurrent是sap.ui.model.json.JSONModel(SAPUI5默认的模型类型),它对字符串类型的日期值处理是兼容的。 valueLiveUpdate="true"这个属性不影响格式显示,它只是控制输入时是否实时更新绑定值,不用调整。
这样修改后,DateTimePicker就能正确识别绑定的字符串值,按照你设置的dd.MM.yy HH:mm格式显示当前时间了!
内容的提问来源于stack exchange,提问作者alexP
相关产品推荐
相关产品推荐

