我正在努力格式化OData V4 Edm.DateTime值。当我将其声明为正常日期时间值
时<Label text="{ams>Major}.{ams>Minor}.{ams>Build} (
{
path: 'ams>CreationDate',
type: 'sap.ui.model.type.Date',
formatOptions: {
pattern: 'yyyy/MM/dd'
}
})"/>
我收到以下错误:
TypeError: j.getTime is not a function
如果我使用OData数据类型声明它,则不会格式化任何内容。
<Label text="{ams>Major}.{ams>Minor}.{ams>Build} (
{
path: 'ams>CreationDate',
type: 'sap.ui.model.odata.type.Date',
formatOptions: {
pattern: 'yyyy/MM/dd'
}
})"/>
提出例如:
2016-11-21T17:13:56.207+01:00
是否有可能直接在XML模板中对其进行格式化,或者我是否必须使用自定义格式化程序?
答案 0 :(得分:1)
我会使用自定义格式化程序。它们是为这种任务创建的,如果你有多个日期,你可以重复使用相同的格式化程序(很酷)。
答案 1 :(得分:0)
改进答案:
正如SAP支持所指出的,这是使用OData V4时的方法:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="list">
<li></li>
<li></li>
<li></li>
</ul>
重要的是要给出精确度。我的OData服务(ASP.NET WEB API)以毫秒返回datetimeoffset。因此,精度必须设置为3。
原始答案:
此外,由于我遇到了一些问题,这是我使用自定义格式化程序的方法:
为什么你不能使用常见的Date格式的原因是,odata值是一个字符串。我在我的控制器和dateformat.js脚本上使用了自定义格式化程序。
<Text text="{
path: 'agent>/CurrentVersion/CreationDate',
type: 'sap.ui.model.odata.type.DateTimeOffset',
constraints: {
precision: 3,
v4: true
},
formatOptions: {
pattern: 'dd. MM. yyyy'
}
}"
tooltip="{
path: 'agent>/CurrentVersion/CreationDate',
type: 'sap.ui.model.odata.type.DateTimeOffset',
constraints: {
precision: 3,
v4: true
},
formatOptions: {
pattern: 'dd. MM. yyyy - hh:mm:ss'
}
}"/>
这是我的格式化程序代码(typescript):
<Label text="{parts: [{path: 'mymodel>CreationDate', type: 'sap.ui.model.odata.type.Date'},
{path: 'i18n>global.dateformat', type: 'sap.ui.model.type.String'}],
formatter: '.odatadateformatter'}"/>
任何其他方法都会导致错误。您现在可以根据i18n信息调整日期,这样您就可以针对不同的国家/地区使用不同的格式。我认为还有一个选项可以在dateFormat(...)函数中放入一个区域设置