私はsap.m.DatePickerに奇妙な問題がいくつかあります。私がいつもしているように、私はGoogleを介してトピックを検索し、彼らは私を助けましたが、完全にはありません。私はsap.m.DatePickerで希望する方法で日付を書式設定できません
は私が達成したいこと:私はsap.ui.table.Table
でsap.ui.table.Column
を持っていると思いますし、この列はdd.MM.yyyy
としてフォーマットされた日付とtemplate: new sap.m.DatePicker()
を持つ必要があります。私がこれまで行ってきた何
:私は、ODATAサービスからsap.ui.table.Table
を移入するsap.ui.model.odata.v2.ODataModel()
を使用しています。対応する列の日付を希望の形式で表示することに決めてしまうまで、すべてがうまくいった。このようにして
displayFormat: "dd.MM.yyyy",
valueFormat: "yyyy-MM-dd",
//...
value = "{" + fieldName + "}"
、すべての日付は、次の形式で表示されます:最初は、私は日付ピッカーのコンストラクタで書式設定に関連するのみこれらのプロパティを使用していたSun Aug 06 2017 03:00:00 GMT+0300 (FLE Daylight Time)
(私が使用してそれを表現する方法がわかりませんフォーマット文字列)。私は昨日ドキュメントを読んでいることを覚えています。私がバインドすると、displayFormatは無視されます。それは私には...私はなぜそれが分からないのですか?
とにかく、私はこのような値を設定するためのアドバイスを与えソリューション、見つかった:まず
value: {
path: colName,
type: new sap.ui.model.type.Date({
pattern: "dd.MM.yyyy"
//source: { pattern: "yyyy-MM-dd HH:mm:ss:fff" }
})
}
を、うまく動作しているようですし、日付がフォーマットされ、正しく表示されますが、私がしようとすると、たとえば、私は2017年8月6日を選択します。odataサービスを介してデータベースに保存される内容は、2017-06-08 00:00:00.000です。これは8月6日ではなく6月8日です。私は8月2日を選択 - データベースでは2017-02-08 00:00:00.000 - 2月8日を参照してください。月と日が切り替わるように見えます。たとえば、8月30日を選択した場合、変更は保存されません。問題の内容を理解する限り、番号30の月がないので、それを保存することを拒否します。全く意味をなさない。 :D
次に、source: {}
という行を追加/コメント解除しようとしました。今度は、データベース内のすべての行にその日付列の値としてnullがあるかのように、すべての行に対して日付列には空が表示されます。
次に、DatePickerテンプレートの定義からdisplayFormat: "dd.MM.yyyy", valueFormat: "yyyy-MM-dd"
を削除しようとしましたが、何も変更されませんでした。面白いのは、もし私がそれらの2行を削除しても、私はまだ行の日付を変更することができます(変更はデータベースに保存されます)。
は、その後、私は私はこのようなフォーマッタを追加する必要があることを、言った別の解決策、accrossに来た:
value: {
path: colName,
formatter: function (val) {
return sap.ui.core.format.DateFormat.getDateInstance({ pattern: "dd-MM-yyyy" }).format(val);
}
};
この方法は、すべてではそれが必要として動作しているようです。今、私はフォーマットdd.MM.yyyy
を使ってあきらめたのかと聞かれるかもしれません。答えは「いいえ!」です。ただ機能しません。
これは主な質問です。質問したいのですが、このフォーマットで何が問題になっていますか?どんなシンボルを使用していても、コンマ、ダッシュ、常に動作します(dd-MM-yyyy or dd,MM,yyyy
)。日付には対応する記号が表示されます。私はdd.MM.yyyy
を使用しようとすると、そのようなエラー: 、そのような:
はあなたの助けありがとうございました!それを感謝します!
編集:私はちょうどこの問題を回避するためのアイデアを思いついた。残念なことに、それは動作しませんし、正確に同じエラーを生成する、上記の画像で説明します。ここでは非稼働ソリューションです:return sap.ui.core.format.DateFormat.getDateInstance({ pattern: "dd-MM-yyyy" }).format(val).replace(/\-/g, '.');
user2177283 @それはあなたを助けるのですか? –
ありがとうございました。私はちょうどそれをテストした。最初は、うまくいくようです。すべての行について、 'dd.MM.yyyy'で日付を見ることができます。私は新しい行を選択すると、通常同様に表示されます。しかし、データベースを調べると、面白かったです。私は6月6日を選択し、それを表示します。しかし、私がdbで見たのは、 '2015-06-05 21:00:00.000'です。それから私は11月26日を選んだ。 dbでは '2015-11-25 22:00:00.000'と表示されます。私たちのタイムゾーンはUTC + 2で、DSTを使用しています。私はそれが何らかの形でそれに関連していることをはっきりと見ることができます。 – user2177283
また、外部フィルタとしてグリッド外にdatepickerがあります。 10.10.2017より大きい日付でフィルタリングすると、これはFiddlerに表示されます: 'GET localhost:port/ODataService.svc/Items/$ count?$ filter =(Itm_DateFrom%20ge%20datetime%272017 -10-09T21%3a00%3a00%27%20)。私が見る限り、それはすべて09.10.2017 21:00より大きい日付でフィルタリングします – user2177283