1. ホーム
  2. jquery

[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?

2022-03-14 22:35:39

質問

に初めて挑戦しています。 Ajax をjQueryで使用しています。データをページに取り込むことができましたが、Dateデータ型に対して返されるJSONデータに問題があります。基本的には、次のような文字列が返されます。

/Date(1224043200000)/

JSONの全くの初心者から - これを短い日付のフォーマットにするにはどうすればいいのでしょうか?これは、jQueryコードのどこかで処理されるべきでしょうか?私は jQuery.UI.datepicker プラグインを使用して $.datepicker.formatDate() を実行しましたが、うまくいきませんでした。

参考:ここにある回答を組み合わせて思いついた解決策を紹介します。

function getMismatch(id) {
  $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
      $("#AuthMerchId").text(result.AuthorizationMerchantId);
      $("#SttlMerchId").text(result.SettlementMerchantId);
      $("#CreateDate").text(formatJSONDate(Date(result.AppendDts)));
      $("#ExpireDate").text(formatJSONDate(Date(result.ExpiresDts)));
      $("#LastUpdate").text(formatJSONDate(Date(result.LastUpdateDts)));
      $("#LastUpdatedBy").text(result.LastUpdateNt);
      $("#ProcessIn").text(result.ProcessIn);
    }
  );

  return false;
}

function formatJSONDate(jsonDate) {
  var newDate = dateFormat(jsonDate, "mm/dd/yyyy");
  return newDate;
}

このソリューションは、コールバックメソッドから私のオブジェクトを取得し、日付フォーマットライブラリを使用してページに適切に日付を表示しました。

解決するには?

eval() は必要ありません。これで問題なく動作します。

var date = new Date(parseInt(jsonDate.substr(6)));

substr() 関数は /Date( の部分と parseInt() 関数は整数を取得し )/ を最後に追加します。結果として得られる数値は Date のコンストラクタを使用します。


意図的に基数を省いています(第2引数の parseInt を参照してください。 以下のコメント .

また、完全に同意する ローリーさんのコメント : ISO-8601の日付は、この古い形式よりも好まれます。ですから、この形式は一般的に新しい開発には使用しないでください。

ISO-8601 フォーマットの JSON 日付を使用するには、単に文字列を Date コンストラクタを使用します。

var date = new Date(jsonDate); //no ugly parsing needed; full timezone support