You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:41:17