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

UI5中OData返回日期转换为仅日期格式的问题

解决UI5中OData非标准日期格式的格式化问题

我明白你的困扰——OData返回的这种带时区的日期字符串确实没法直接用UI5默认的Date类型解析,因为它默认只认ISO 8601格式(比如2018-04-09T00:00:00Z)或者时间戳。下面给你两种靠谱的解决方案:

方案一:自定义格式化函数(最稳妥,兼容性强)

这种方法直接自己解析字符串转成Date对象,再按需求格式化,不用担心不同环境的格式差异。

  1. 在你的控制器里添加一个格式化函数:
formatDateToDMY: function(sRawDate) {
  if (!sRawDate) return ""; // 处理空值情况
  const oDate = new Date(sRawDate);
  // 注意月份是从0开始的,所以要+1
  const day = String(oDate.getDate()).padStart(2, '0');
  const month = String(oDate.getMonth() + 1).padStart(2, '0');
  const year = oDate.getFullYear();
  return `${day}/${month}/${year}`;
}
  1. 在XML视图里调用这个函数:
<Text text="{ path: 'MyoDataService>ExecuteDay', formatter: '.formatDateToDMY' }"/>

方案二:给Date类型指定Source解析格式

如果你更想用UI5自带的类型系统,可以配置source参数告诉它如何解析输入的字符串格式:

<Text 
  text="{ 
    path: 'MyoDataService>ExecuteDay', 
    type: 'sap.ui.model.type.Date', 
    formatOptions: { pattern: 'dd/MM/yyyy' },
    source: {
      pattern: 'EEE MMM dd yyyy HH:mm:ss zzzz'
    } 
  }"/>

不过要注意:不同浏览器对日期toString的输出格式可能有细微差异,这种方式可能存在兼容性问题,不如自定义函数稳妥。

额外建议

如果能协调后端的话,最好让OData服务返回标准ISO 8601格式的日期,这样前端直接用默认的Date类型就能轻松格式化,省去很多麻烦~

内容的提问来源于stack exchange,提问作者Juan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:19