美文网首页收藏SAP
SAP UI5 日期类型 sap.ui.model.type.D

SAP UI5 日期类型 sap.ui.model.type.D

作者: _扫地僧_ | 来源:发表于2022-02-17 20:07 被阅读0次

    我开发了一个 SAP UI5 应用,使用了数据类型 sap.ui.model.type.Date,并且指定了显示格式 pattern 为:yyyy-MM-ddTHH:mm:ss

    <ObjectAttribute title="{i18n>dateTitle}" text="{
                        path: 'invoice>ShippedDate',
                        type: 'sap.ui.model.type.Date',
                        formatOptions: {
                          style: 'long',
                          source: {
                            pattern: 'yyyy-MM-ddTHH:mm:ss'
                          }
                        }
                      }"/>
    

    这个字段绑定的数据源的值为:2015-04-01T01:20:59

    我期望在 SAP UI5 上显示的格式为 某年-某月-某日-T-小时-分-秒,但是最后的显示效果如下图:April 1,2015

    本文介绍如何分析这个显示格式的问题。

    在前一篇文章,我们已经排除了这个问题是由于数据解析错误造成的,因为在 DateFormat.js 的 _format 方法输入参数 oJSDate,已经能够观察到正确从本地 JSON 文件解析出的包含了小时,分,秒的时间值:Thu Apr 02 2015 01:20:30 GMT+0800 (China Standard Time)

    this.aFormatArray 只包含了五条记录,不含小时,分,秒,因此最后输出的时间只有年月日。

    分析 aFormatArray 的数据源:

    this.aFormatArray = this.parseCldrDatePattern(this.oFormatOptions.pattern);
    
    

    运行时调试:this.oFormatOptions.pattern 的值为 MMddyyyy

    我们在 xml 视图里指定的 pattern,可以在 callstack 里看到:

    XML 视图地址,位于 一套适合 SAP UI5 开发人员循序渐进的学习教程 步骤第 34:

    pattern: 'yyyy-MM-ddTHH:mm:ss'

    我们 xml 视图里只提供了 source-pattern,而不是 pattern,因此,SAP UI5 框架,需要调用如下代码来生成 pattern:

    oFormat.oFormatOptions.pattern = oInfo.getPattern(oFormat.oLocaleData, oFormat.oFormatOptions.style, oFormat.oFormatOptions.calendarType);
    

    从 SAP UI5 生成 Pattern 的逻辑来查看,我们 xml 视图里提供的 pattern 没有作为输入参数被考虑:

    getDatePattern: function(sStyle, sCalendarType) {
                assert(sStyle == "short" || sStyle == "medium" || sStyle == "long" || sStyle == "full", "sStyle must be short, medium, long or full");
                return this._get(getCLDRCalendarName(sCalendarType), "dateFormats", sStyle);
            },
    

    style 支持 full,而我指定的是 long.

    如果设置成 full,显示效果如下:Thursday, April 2, 2015

    更多Jerry的原创文章,尽在:"汪子熙":


    相关文章

      网友评论

        本文标题:SAP UI5 日期类型 sap.ui.model.type.D

        本文链接:https://www.haomeiwen.com/subject/wvsukrtx.html