2016-11-21 11 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

Улучшение Ответ:

Как отметил поддержку 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 (...)

1

Я бы использовал пользовательский форматировщик. Они были созданы для такого рода задач, и если у вас несколько дат, вы можете повторно использовать один и тот же форматтер (что здорово).

+0

ОК, благодарю вас за эту информацию. Как я читал, это было поддержано в используемой там OData V2 Model/Edm.DateTime. Знаете ли вы, поддерживает ли подобный синтакс? В противном случае я подал бы запрос на openu5 Repo на github. Было бы круче иметь эту функцию без копирования форматирования на всех моих контроллерах. –

 Смежные вопросы

  • Нет связанных вопросов^_^