SAP UI5 日期类型 sap.ui.model.type.Date 的解析格式问题分析
我開發了一個 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
本文介紹如何分析這個顯示格式的問題。
我們在 Chrome 開發者工具里找到 sap.ui.model.type.Date 的實現文件地址:
sap/ui/model/type/Date.js
首先在函數 Date1.prototype.formatValue 設置斷點,觀察到字符串類型的原始值,已經成功傳入該函數了:
sInternalType 的值:string
string 類型的 PrimitiveType 值就為其本身。
該邏輯定義在如下函數里:
SimpleType.prototype.getPrimitiveType = function (sInternalType) {// Avoid dealing with type objects, unless really necessaryswitch (sInternalType) {case "any":case "boolean":case "int":case "float":case "string":case "object":return sInternalType;default:var oInternalType = DataType.getType(sInternalType);return oInternalType && oInternalType.getPrimitiveType().getName();}};從模型中拿到格式數據的模板:
比如一周七天的縮寫單詞,存儲在 aDaysAbbrev 里:
一年 12 個月的單詞,存儲在 aMonthsWide 里:
進入 parse 函數內部,Calendar type 為:Gregorian,意思是陽歷。
Calendar type 為枚舉值,所有支持的 calendar 類型如下圖所示:
格式化數組的值:aFormatArray
已經成功解析出 2015年4月2日了:
開始解析:T01:20:30
所有可能的日期分隔符:
\u002d\u007E\u2010\u2011\u2012\u2013\u2014\ufe58\ufe63\uff0d\uFF5E在 Dateformat.js 函數的 _parse 函數的返回值,已經觀察到小時,分和秒已經成功解析了。所以問題沒有出在解析,而是在值的顯示上。
最后返回的值:Thu Apr 02 2015 01:20:30 GMT+0800 (China Standard Time
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP UI5 日期类型 sap.ui.model.type.Date 的解析格式问题分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 邬贺铨院士:应主动迎接IPv6主导的互联
- 下一篇: 华为中国合作伙伴大会今日举行 参会人员达