![](/img/trans.png)
[英]How can we use the datepicker to change the date format with vee-validate V4 library
[英]How to use custom date format an OData V4 Edm.DateTime value
我正在努力格式化 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 模板中对其进行格式化,还是必须使用自定义格式化程序?
我会使用自定义格式化程序。 它们是为此类任务创建的,如果您有多个日期,则可以重复使用相同的格式化程序(这很酷)。
改进答案:
正如 SAP 支持所指出的,这是使用 OData V4 时要走的路:
<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'
}
}"/>
重要的部分是给出精度。 我的 OData 服务 (ASP.NET WEB API) 以毫秒返回 datetimeoffset。 因此,精度必须设置为 3。
原答案:
此外,由于我遇到了一些问题,这是我使用自定义格式化程序的方法:
不能使用通用日期格式的原因是 odata 值作为字符串出现。 我在控制器和dateformat.js脚本上使用了自定义格式化程序。
<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'}"/>
这是我的格式化程序代码(打字稿):
var dateFormat: DateFormatStatic;
...
odatadateformatter(datetime: sap.ui.model.odata.type.Date, format?: string): string {
if(!format)
format = "yy-mm-dd:hh:MM:ss";
return dateFormat(new Date(datetime), format);
}
任何其他方法都会导致错误。 您现在可以根据您的 i18n 信息相应地调整您的日期,因此您可以为不同的国家/地区使用不同的格式。 我认为还有一个选项可以在 dateFormat(...) 函数中放入语言环境
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.