質問

では、以下のJSON日付表示:

"\/Date(1221644506800-0700)\/"

いまこの直列化復元でのJavaScript日-タイプです。

またMS AJAX JavaScrioptSerializerは以下の通りです。

Sys.Serialization.JavaScriptSerializer.deserialize("\/Date(1221644506800-0700)\/")

しかし、すべてのバのリテラル文字列。

役に立ちましたか?

解決

の提供を知っていただくた文字列が日付かないこ

 new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10))

他のヒント

ベルトランLeRoyの手によってASP.NET (Atlas)/AJAX 記載のデザインJavaScriptSerializer DateTime出力 と起源を明らかにすること謎の先頭と最後のスラッシュのみ.彼はこの勧告:

走簡易検索"\/日(\d+))\/"に置き換え"新日($1)"前の<エバール> (その後の検証)

私は実施してい:

var serializedDateTime = "\/Date(1271389496563)\/";
document.writeln("Serialized: " + serializedDateTime + "<br />");

var toDateRe = new RegExp("^/Date\\((\\d+)\\)/$");
function toDate(s) {
    if (!s) {
        return null;
    }
    var constructor = s.replace(toDateRe, "new Date($1)");
    if (constructor == s) {
        throw 'Invalid serialized DateTime value: "' + s + '"';
    }
    return eval(constructor);
}

document.writeln("Deserialized: " + toDate(serializedDateTime) + "<br />");

これは、他の多くの回答:

  • 使用する固定正規表現としてSjoerd Visscherかった--忘れず、^および$.
  • を避ける文字列です。置き換え、'g'または'i'オプションにおRegEx."日(1271389496563)//日1271389496563)/"だ。

JSON値はstring,number,オブジェクト、配列、true、falseの場合はnullになります。このはただの文字列になります。詳しくはこの道を代表する写真をJSON.この構文はasp.net ajaxの実装です。その他のISO8601形式です。

できる構文でこのように:

var s = "\/Date(1221644506800-0700)\/";
var m = s.match(/^\/Date\((\d+)([-+]\d\d)(\d\d)\)\/$/);
var date = null;
if (m)
  date = new Date(1*m[1] + 3600000*m[2] + 60000*m[3]);

正規表現の使用ASP.net AJAXでの直列化復元方法を見た文字列のように見える"/日1234)の文字列だけでなく、実際にニーズを含んでい引用符を使用).しかし、文字列が必要となりますの見積もり後のスラッシュ、キャラクターのjavascriptコードを文字列のような"\"\/日1234)\/\"".

このことです。

Sys.Serialization.JavaScriptSerializer.deserialize("\"\\/Date(1221644506800)\\/\"")

このような変なものの見があったのでserialize日、serializeの文字列から返されると、直列化復元は、クライアント側ます。

のようなものです。

Script.Serialization.JavaScriptSerializer jss = new Script.Serialization.JavaScriptSerializer();
string script = string.Format("alert(Sys.Serialization.JavaScriptSerializer.deserialize({0}));", jss.Serialize(jss.Serialize(DateTime.Now)));
Page.ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", script, true);

方を使用しないでMicrosoft Ajaxでの追加試作機能、文字列のクラスです。

E.g.

    String.prototype.dateFromJSON = function () {
    return eval(this.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));
};

を使用しないエバール?う簡単なよう

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

どんはMicrosoftった誤解を招くよこの形式です。しかし、JSON仕様は非常に明確な付き合いを定義する方法を記述しての写真をJSON.

実際、momentjs対応このようなフォーマットを行ないますようなもの:

    var momentValue = moment(value);

    momentValue.toDate();

この値を返しますをjavascriptの日付フォーマット

の数は、標準JS時間

new Date(1221644506800)

水月17日2008年19:41:46GMT+1000(米国東部時間時点の見込み

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top