2016-11-21 10 views
0

OData V4 Edm.DateTime 값을 형식화하는 데 어려움을 겪고 있습니다. 내가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

개선 답 :

<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' 
       } 
      }"/> 

중요한 부분은 정밀도를 제공하는 것입니다 :

으로는 SAP의 지원에 의해 지적이 하나로, OData V4를 사용하는 경우 길을 가야하는 것입니다. 내 OData 서비스 (ASP.NET WEB API)는 밀리 초 단위로 datetimeoffset을 반환합니다. 따라서, 정밀도는 3으로 설정해야합니다

원래 답변 :

이유, 왜 : 또한

좀 문제가 있었다으로, 여기에 사용자 정의 포맷터 내 접근 방식은 당신은 일반적인 날짜 형식을 사용할 수 없다는 odata 값은 문자열로 제공됩니다. 내 컨트롤러와 dateformat.js 스크립트에서 사용자 정의 포맷터를 사용했습니다.

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); 
     } 

다른 방법이 오류가 발생할 :

<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 (...) 함수에 로케일을 넣을 수있는 옵션이 있다고 생각한다.

1

맞춤식 포맷터를 사용합니다. 이러한 작업을 위해 만들어졌습니다. 날짜가 여러 개인 경우 동일한 포맷터를 다시 사용할 수 있습니다 (멋진 기능).

+0

OK, 그 정보를 주셔서 감사합니다. 내가 읽었을 때 OData V2 Model/Edm.DateTime에서 지원되었다. 유사한 신택스를 지원할 계획이 있는지 아십니까? 그렇지 않으면 나는 github에 openui5 Repo에 대한 요청을 제출할 것입니다. 모든 컨트롤러에서 포맷터를 복사하지 않고도이 기능을 사용하는 것이 더 낫습니다. –