发帖以求繁荣。 我的谷歌点击量为零。
我正在编写 SAP Business One Web 客户端扩展。 我正在使用工作列表模板并拥有 b1s/v2/ 服务层元数据(在设置模板时自动生成)
运行沙箱版本(“npm run start-local”),它会根据元数据自动生成假数据。我的数据包括一个
edm.DateTimeOffset
,由 Fiori 使用 sap.ui.model.odata.type.DateTimeOffset 模型解析。
这是来自测试数据代理的示例响应对象(全部自动生成)
{
DocEntry: 1,
U_CardCode: "U_CardCode_0",
U_CardName: "U_CardName_0",
U_DocCurrency: "U_DocCurrency_0",
U_DocTotal: "",
U_DueDate: "2017-04-13T14:50:39.000Z",
U_Status: "U_Status_0",
U_SupplierInvNo: "U_SupplierInvNo_0",
}
一个完全正常的
U_DueDate
值,根据我能找到的所有文档,它是一种可接受的格式,并且通过它是 sap 生成的值这一事实得到双重确认。
这会在屏幕上产生错误
非法 sap.ui.model.odata.type.DateTimeOffset
添加格式化程序不起作用。 如果它无法解析该值,那么它不会将其传递给格式化程序。
事实证明有一种方法可以覆盖元数据中的预期类型。 我找不到太多关于它的文档,但我改变了元素
text="{'U_DueDate'}" />
到
text="{
path: 'U_DueDate',
targetType: 'any',
formatter: '.formatter.date'
}" />
日期现在被接受为字符串,因此我可以使用自定义格式化程序。 这是格式化程序中的日期函数:
date : function (sValue) {
if (!sValue) {
return "";
}
var date = new Date(sValue)
var asString = date.toLocaleDateString("en-GB")
return asString;
}
您不必对本地化进行硬编码,但我的用例就是这样的