2016-11-21 22 views
0

OData V4 Edm.DateTime値の書式設定には苦労しています。私は通常の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' 
       } 
      }"/> 

重要な部分は、精度を与えることです:

として、これはODataのV4を使用したときに移動するための方法でサポートするSAPによって指摘。私の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'}"/> 

は、ここに私のフォーマッタコード(typescriptです)です。 i18n情報に合わせて日付を調整できるようになりましたので、各国ごとに異なるフォーマットを使用することができます。私は、dateFormat(...)関数にロケールを入れるオプションもあると思います。

1

カスタムフォーマッタを使用します。これらのタスクのために作成されたもので、複数の日付がある場合は、同じフォーマッタを再利用することができます(これはクールです)。

+0

ありがとう、その情報をありがとう。私が読んだとおり、これはOData V2 Model/Edm.DateTimeでサポートされていました。同様のシンセックスをサポートする予定があるかどうか知っていますか?さもなければ私はgithubのopenui5リポジトリにリクエストを提出します。すべてのコントローラにフォーマッタをコピーせずにこの機能を使用すると、よりクールなことになります。 –

関連する問題