1

MVC コントローラーから返された JSON オブジェクトの配列を取得します。オブジェクトには、解析してフォーマットする必要のある日付フィールドがいくつかあります。

デフォルトの MVC JSON シリアライザーを優れた Newtonsoft.Json ライブラリに置き換えたので、日付はすでにかなり適切にフォーマットされており、次のように返されます。

"SystemDate": "2013-05-06T17:19:40.443",
"LocalDate": "2013-05-06T18:19:40",

日付処理のためにクライアント側で Moment.js を使用しています。これらの日付をさらにフォーマットして UI に表示するための適切なソリューションを探していました。

私は、書式設定する日付と日付パターンおよび書式設定するフィールド名の配列を持つオブジェクトの JSON 配列を取るカスタム関数を書き始めようとしていました。

関数のシグネチャは次のようになります。

function formatDates(dataArray, pattern, fields) { /code/ };

dataArray は次のようになります。

[{"name": Jammer, 
  "SystemDate": "2013-05-06T17:19:40.443", 
  "LocalDate": "2013-05-06T18:19:40"
 }, 
 {another object}
 {another object} 
 {another object}
]

パターンは次のようになります。

"dddd, MMMM Do YYYY, h:mm:ss a"

フィールドのリストは次のようになります (上記のオブジェクト例を使用):

[{"SystemDate"}, {"LocalDate"}]

私は Moment.js を使い始めたばかりなので、独自の API には特に精通していませんが、ドキュメントを見ると、この種の機能がコードベースに既に存在することを示唆するものは何もありません。

これを実装する前に、これを処理する何かが Moment.js に既にあるかどうか疑問に思っていましたか? または、この機能を最適に実装する方法についての指針はありますか?

4

1 に答える 1

0

これは、日付操作ライブラリに期待するようなものではありません。データをデコードし、反復を実行して日付を見つけ、瞬間を使用して日付の書式設定を行い、最後にデータを必要な形式に再エンコードするのは、実際にはあなた次第です。とはいえ、欲しいものを見るのは非常に些細な作業のようです。

このような何かがあなたのためにそれをするはずです

JavaScript

var jsonString = '[{"name":"Jammer0","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"},{"name":"Jammer1","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"},{"name":"Jammer2","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"},{"name":"Jammer3","SystemDate":"2013-05-06T17:19:40.443","LocalDate":"2013-05-06T18:19:40"}]';

var formatted = JSON.stringify(JSON.parse(jsonString).map(function (record)  {
    var requiredPattern = "dddd, MMMM Do YYYY, h:mm:ss a";

    record.SystemDate = moment(record.SystemDate).format(requiredPattern);
    record.LocalDate = moment(record.LocalDate).format(requiredPattern);

    return record;
}));

console.log(formatted);

jsfiddleについて

于 2013-05-11T10:51:50.310 に答える