web-dev-qa-db-ja.com

SAPUI5テーブルのODataModelからの日付のフォーマット

ODataモデルから入力されたSAPUI5テーブルがあります。その列の1つは、フォーマットしたい日付/時刻フィールドですが、SUI5でそれを行う方法がわかりません。

これは私が今していることです:

var tableModel = new sap.ui.model.odata.ODataModel("...");
var table = new sap.ui.table.DataTable();
table.setModel(tableModel);
table.addColumn(new sap.ui.table.Column({
    label: new sap.ui.commons.Label({text: "Date"}),
    template: new sap.ui.commons.TextView().bindProperty("text", "DATE"),
    sortProperty: "DATE",
    filterProperty: "DATE"
}));

出力の最初の数行は次のとおりです(私のブラウザー言語はドイツ語です)。

example output

私がやりたいのは、日付と時刻の形式を、たとえばmm/dd/yyyy hh:mmに変更することだけです。

私はいくつかの検索をしました、そして次の質問はまさに私の問題です-しかし、私が理解していないか、実際には問題を解決しないという受け入れられた答えがあります: テーブルSAPUI5の日付形式

これは些細な質問かもしれませんが、これを簡単に行う方法を見逃したか、公式チュートリアルの1つで扱われています。その場合は、コメント欄でご指摘いただければ、この質問を削除させていただきます。

5
Grüse

formatter-functionを使用します。

var tableModel = new sap.ui.model.odata.ODataModel("...");
var table = new sap.ui.table.DataTable();
table.setModel(tableModel);
table.addColumn(new sap.ui.table.Column({
    label: new sap.ui.commons.Label({text: "Date"}),
    template: new sap.ui.commons.TextView({
        text : { 
            path : 'DATE',
            formatter : function(value){
                return /* TODO: some format logic */;
            }
        }
    }),
    sortProperty: "DATE",
    filterProperty: "DATE"
}));
3

フォーマッタ関数の使用は非常に柔軟ですが、独自のフォーマットロジックを記述せずにもっと簡単なものを探している場合は、次のようにtypeではなくformatterプロパティを使用することを検討できます。

template: new sap.ui.commons.TextView().bindProperty("text", {
  path: "OrderDate",
  type: new sap.ui.model.type.Date({pattern: "MM/dd/yyyy hh:mm"})
})
16
qmacro

標準モデルフォーマッタを検討する価値があるかもしれません: sap.ui.model.type.DateTime および sap.ui.model.type.Date

template: new sap.ui.commons.TextView().bindProperty("text", {
  path: "DATE",
  type: new sap.ui.model.type.DateTime,
  formatOptions: { style: "medium" }
})

XMLの例(alwaysuse XML;)

<Text text="{path : 'runDateTime', 
             type : 'sap.ui.model.type.DateTime',
             formatOptions: { style : 'medium'}}" />

UI5の使用は、アプリケーションに標準ビューを適用することについての会話であることが多いため、標準フォーマットを使用することは有用なアイデアかもしれません。

フォーマッター関数を使用して数値をフォーマットする方法も追加しています。

 <template> = new sap.ui.commons.TextField().bindProperty("<value>",{
          path: "<GROSSVALUE>",
          type: new sap.ui.model.type.Integer({
              maxIntegerDigits: 10,
              minFractionDigits: 2,
              maxFractionDigits: 2,
              groupingEnabled: true,
              groupingSeparator: ",",
              decimalSeparator: "."
            })});     
1
Caraes