2104

私はjQueryを使ってAjaxで最初のクラックを取っています。データをページに取得していますが、日付データ型に対して返される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;
}

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

4

41 に答える 41

1745

eval()は必要ありません。これはうまくいきます:

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

関数はその部分substr()を取り出し、関数は整数を取得し、最後の を無視します。結果の数値はコンストラクターに渡されます。/Date(parseInt())/Date


意図的に基数 ( の 2 番目の引数parseInt) を省略しました。以下の私のコメントを参照してください。

また、私はRory のコメントに完全に同意します。ISO-8601 の日付は、この古い形式よりも優先されます。したがって、この形式は通常、新しい開発には使用しないでください。

ISO-8601 形式の JSON 日付の場合は、文字列をDateコンストラクターに渡すだけです。

var date = new Date(jsonDate); //no ugly parsing needed; full timezone support
于 2010-02-23T04:15:09.440 に答える
138

これを使用して、JSON から日付を取得できます。

var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));

そして、JavaScript Date Formatスクリプト (縮小して gzip すると 1.2 KB) を使用して、必要に応じて表示できます。

于 2008-10-15T21:14:32.247 に答える
103

Newtonsoft Json.NETを使用している場合は、IE8、Firefox 3.5 および Json.NET でネイティブ JSON を使用する方法を参照してください。

また、Json.NET によって記述された日付の形式の変更に関するドキュメントも役立ちます。 Json.NET を使用 した日付のシリアル化

あまりにも怠惰な人のために、ここに簡単な手順があります. JSON には緩やかな DateTime 実装があるため、IsoDateTimeConverter(). Json.NET 4.5 以降、デフォルトの日付形式は ISO であるため、以下のコードは不要であることに注意してください。

string jsonText = JsonConvert.SerializeObject(p, new IsoDateTimeConverter());

JSONは次のようになります

"fieldName": "2009-04-12T20:44:55"

最後に、ISO 日付を JavaScript 日付に変換する JavaScript をいくつか示します。

function isoDateReviver(value) {
  if (typeof value === 'string') {
    var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(?:([\+-])(\d{2})\:(\d{2}))?Z?$/.exec(value);
      if (a) {
        var utcMilliseconds = Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]);
        return new Date(utcMilliseconds);
      }
  }
  return value;
}

こんな感じで使いました

$("<span />").text(isoDateReviver(item.fieldName).toLocaleString()).appendTo("#" + divName);
于 2010-01-19T04:53:24.090 に答える
70

元の例:

/Date(1224043200000)/  

組み込みの JSON シリアル化を使用して WCF REST 経由で日付を送信するときに、WCF で使用される書式設定は反映されません。(少なくとも .NET 3.5、SP1 では)

ここでの回答は役に立ちましたが、WCF JSON で返される数値 (1970 年以降) にタイムゾーン GMT オフセットが追加されているように見えるため、正規表現を少し編集する必要があります。

私が持っているWCFサービスでは:

[OperationContract]
[WebInvoke(
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.WrappedRequest
    )]
ApptVisitLinkInfo GetCurrentLinkInfo( int appointmentsId );

ApptVisitLinkInfo は単純に定義されています。

public class ApptVisitLinkInfo {
    string Field1 { get; set; }
    DateTime Field2 { get; set; }
    ...
}

"Field2" がサービスから Json として返される場合、値は次のとおりです。

/Date(1224043200000-0600)/

値の一部としてタイムゾーン オフセットが含まれていることに注意してください。

変更された正規表現:

/\/Date\((.*?)\)\//gi

それは少し熱心で、最初の数字だけでなく、括弧の間のすべてを取得します。結果の 1970 年以降の時刻とタイムゾーン オフセットをすべて eval に入力して、日付オブジェクトを取得できます。

置換の結果の JavaScript の行は次のとおりです。

replace(/\/Date\((.*?)\)\//gi, "new Date($1)");
于 2009-12-30T01:21:28.493 に答える
66

繰り返さないでください - を使用して日付変換を自動化します$.parseJSON()

投稿への回答では、日付を JavaScript の日付に手動で変換できます。jQuery を$.parseJSON()少しだけ拡張したので、指示すると自動的に日付を解析できるようになりました。ASP.NET 形式の日付 ( )と、ブラウザー (および json2.js などのライブラリ) のネイティブ JSON 関数でサポートされている/Date(12348721342)/ISO 形式の日付 ( ) を処理します。2010-01-01T12.34.56.789Z

ともかく。日付変換コードを何度も繰り返したくない場合は、このブログ投稿を読んで、生活を少し楽にするコードを入手することをお勧めします。

于 2010-12-27T16:21:04.327 に答える
64

デモを確認するには、ここをクリックしてください

JavaScript/jQuery

var = MyDate_String_Value = "/Date(1224043200000)/"
var value = new Date
            (
                 parseInt(MyDate_String_Value.replace(/(^.*\()|([+-].*$)/g, ''))
            );
var dat = value.getMonth() +
                         1 +
                       "/" +
           value.getDate() +
                       "/" +
       value.getFullYear();

結果- 「2008 年 10 月 15 日」

于 2013-03-17T17:41:21.183 に答える
63

JavaScriptで言うと、

var thedate = new Date(1224043200000);
alert(thedate);

それが正しい日付であることがわかり、どのフレームワークでも JavaScript コードのどこでも使用できます。

于 2008-10-15T20:49:58.207 に答える
39

更新しました

/Date(msecs)/Microsoft の ASP.NET 組み込み JSON 形式 (ここで最初に質問されたなど) と、JSON.NET を含むほとんどの JSON の日付形式 ( など) の両方に対応する必要がある内部 UI ライブラリがあります2014-06-22T00:00:00.0。さらに、oldIE では小数点以下 3 桁以外を処理できないことに対処する必要があります。

まず、使用している日付の種類を検出し、それを解析して通常の JavaScriptDateオブジェクトに変換し、それをフォーマットします。

1) Microsoft Date 形式を検出する

// Handling of Microsoft AJAX Dates, formatted like '/Date(01238329348239)/'
function looksLikeMSDate(s) {
    return /^\/Date\(/.test(s);
}

2) ISO 日付形式を検出する

var isoDateRegex = /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(\.\d\d?\d?)?([\+-]\d\d:\d\d|Z)?$/;

function looksLikeIsoDate(s) {
    return isoDateRegex.test(s);
}

3) MS 日付形式の解析:

function parseMSDate(s) {
    // Jump forward past the /Date(, parseInt handles the rest
    return new Date(parseInt(s.substr(6)));
}

4) ISO 日付形式を解析します。

少なくとも、標準の ISO 日付、または常に 3 ミリ秒の桁数になるように変更された ISO 日付 (上記を参照) を処理していることを確認する方法があるため、コードは環境によって異なります。

4a) 標準の ISO 日付形式を解析し、oldIE の問題に対処します。

function parseIsoDate(s) {
    var m = isoDateRegex.exec(s);

    // Is this UTC, offset, or undefined? Treat undefined as UTC.
    if (m.length == 7 ||                // Just the y-m-dTh:m:s, no ms, no tz offset - assume UTC
        (m.length > 7 && (
            !m[7] ||                    // Array came back length 9 with undefined for 7 and 8
            m[7].charAt(0) != '.' ||    // ms portion, no tz offset, or no ms portion, Z
            !m[8] ||                    // ms portion, no tz offset
            m[8] == 'Z'))) {            // ms portion and Z
        // JavaScript's weirdo date handling expects just the months to be 0-based, as in 0-11, not 1-12 - the rest are as you expect in dates.
        var d = new Date(Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]));
    } else {
        // local
        var d = new Date(m[1], m[2]-1, m[3], m[4], m[5], m[6]);
    }

    return d;
}

4b) 小数点以下 3 ミリ秒固定の ISO 形式を解析する - はるかに簡単:

function parseIsoDate(s) {
    return new Date(s);
}

5) フォーマットします。

function hasTime(d) {
    return !!(d.getUTCHours() || d.getUTCMinutes() || d.getUTCSeconds());
}

function zeroFill(n) {
    if ((n + '').length == 1)
        return '0' + n;

    return n;
}

function formatDate(d) {
    if (hasTime(d)) {
        var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
        s += ' ' + d.getHours() + ':' + zeroFill(d.getMinutes()) + ':' + zeroFill(d.getSeconds());
    } else {
        var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
    }

    return s;
}

6) すべてをまとめる:

function parseDate(s) {
    var d;
    if (looksLikeMSDate(s))
        d = parseMSDate(s);
    else if (looksLikeIsoDate(s))
        d = parseIsoDate(s);
    else
        return null;

    return formatDate(d);
}

以下の古い回答は、この日付フォーマットをjQuery独自のJSON解析に結び付けて、文字列の代わりにDateオブジェクトを取得する場合、またはまだjQuery <1.5で立ち往生している場合に役立ちます。

古い回答

ASP.NET MVC で jQuery 1.4 の Ajax 関数を使用している場合は、次のようにすべての DateTime プロパティを Date オブジェクトに変換できます。

// Once
jQuery.parseJSON = function(d) {return eval('(' + d + ')');};

$.ajax({
    ...
    dataFilter: function(d) {
        return d.replace(/"\\\/(Date\(-?\d+\))\\\/"/g, 'new $1');
    },
    ...
});

parseJSONjQuery 1.5では、Ajax 呼び出しでコンバーター オプションを使用することにより、メソッドをグローバルにオーバーライドすることを回避できます。

http://api.jquery.com/jQuery.ajax/

残念ながら、日付をその場でグローバルに解析するには、古い eval ルートに切り替える必要があります。それ以外の場合は、解析後にケースバイケースで変換する必要があります。

于 2011-02-07T23:56:28.583 に答える
29

JSONには組み込みの日付型はありません。これは、あるエポックからの秒数/ミリ秒のように見えます。エポックがわかっている場合は、適切な時間を追加して日付を作成できます。

于 2008-10-15T20:46:51.770 に答える
25

オブジェクトをインライン スクリプトに書き込むときに Microsoft シリアライザーによって生成された文字を取り除くために、Panos の正規表現に "文字を追加することになりました。

したがって、C#コード ビハインドにプロパティがある場合、それは次のようなものです。

protected string JsonObject { get { return jsSerialiser.Serialize(_myObject); }}

そして、あなたのaspxには

<script type="text/javascript">
    var myObject = '<%= JsonObject %>';
</script>

あなたは次のようなものを得るでしょう

var myObject = '{"StartDate":"\/Date(1255131630400)\/"}';

二重引用符に注意してください。

これを eval が正しく逆シリアル化する形式にするために、次を使用しました。

myObject = myObject.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)');

私はプロトタイプを使用し、それを使用するために追加しました

String.prototype.evalJSONWithDates = function() {
    var jsonWithDates = this.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)');
    return jsonWithDates.evalJSON(true);
}
于 2009-10-09T01:03:56.563 に答える
23

jQuery 1.5 では、古いブラウザーに対応するjson2.jsがある限り、次のように Ajax からのすべての日付を逆シリアル化できます。

(function () {
    var DATE_START = "/Date(";
    var DATE_START_LENGTH = DATE_START.length;

    function isDateString(x) {
        return typeof x === "string" && x.startsWith(DATE_START);
    }

    function deserializeDateString(dateString) {
        var dateOffsetByLocalTime = new Date(parseInt(dateString.substr(DATE_START_LENGTH)));
        var utcDate = new Date(dateOffsetByLocalTime.getTime() - dateOffsetByLocalTime.getTimezoneOffset() * 60 * 1000);
        return utcDate;
    }

    function convertJSONDates(key, value) {
      if (isDateString(value)) {
        return deserializeDateString(value);
      }
      return value;
    }

    window.jQuery.ajaxSetup({
      converters: {
        "text json": function(data) {
          return window.JSON.parse(data, convertJSONDates);
        }
      }
    });
}());

サーバーからすべての日付を UTC として送信することを前提とするロジックを含めました (そうすべきです)。コンシューマーは、Dateこれを反映する適切な ticks 値を持つ JavaScript オブジェクトを取得します。つまり、getUTCHours()その日付で などを呼び出すと、サーバーで行ったのと同じ値が返され、呼び出しgetHours()を行うと、ブラウザによって決定されたユーザーのローカル タイムゾーンで値が返されます。

これは、タイムゾーン オフセットを含むWCF形式を考慮していませんが、比較的簡単に追加できます。

于 2011-04-08T01:59:11.947 に答える
21

jQuery UI datepickerの使用-実際には、jQueryUIがすでに含まれている場合にのみ意味があります。

$.datepicker.formatDate('MM d, yy', new Date(parseInt('/Date(1224043200000)/'.substr(6)))); 

出力:

2008年10月15日

于 2011-08-30T09:33:08.210 に答える
20

これを考えすぎないでください。何十年もやってきたように、1970 年 1 月 1 日の真夜中 GMT/UTC/&c の事実上の標準エポックからの数値オフセットを、このエポックからの秒数 (またはミリ秒) で渡します。JavaScript が好きで、Java が好きで、C が好きで、インターネットが好きです。

于 2009-10-30T04:45:19.530 に答える
19

これらの回答には共通点が 1 つあります。それは、日付を単一の値 (通常は文字列) として保存することです。

もう 1 つのオプションは、JSON 固有の構造を利用して、日付を数値のリストとして表すことです。

{ "name":"Nick",
  "birthdate":[1968,6,9] }

もちろん、会話の両端が形式 (年、月、日) と、どのフィールドが日付であることを意図しているかについて一致していることを確認する必要がありますが、日付の問題を完全に回避できるという利点があります。から文字列への変換。すべて数字です。文字列はまったくありません。また、年、月、日の順序を使用すると、日付による適切な並べ替えも可能になります。

ここで枠にとらわれずに考えてみてください。JSON 日付は文字列として保存する必要はありません。

この方法のもう 1 つの利点は、 CouchDBが配列値に対するクエリを処理する方法を利用して、特定の年または月のすべてのレコードを簡単に (そして効率的に) 選択できることです。

于 2011-06-17T03:54:33.177 に答える
17

素晴らしいスレッドでの投稿:

var d = new Date(parseInt('/Date(1224043200000)/'.slice(6, -2)));
alert('' + (1 + d.getMonth()) + '/' + d.getDate() + '/' + d.getFullYear().toString().slice(-2));
于 2010-09-26T11:20:11.303 に答える
17

ここで別のアプローチを追加するだけで、ここや他の場所で説明されているように、非常に注意しないと、 WCFが採用する「ティックアプローチ」はタイムゾーンで問題が発生する傾向があります。そのため、.NET と JavaScript の両方がタイムゾーン オフセットを含めて正式にサポートする ISO 8601 形式を使用しています。詳細は次のとおりです。

WCF/.NET の場合:

CreationDate は System.DateTime です。ToString("o") は、ISO 8601 準拠の日付文字列を生成する.NET のRound-trip 形式指定子を使用しています。

new MyInfo {
    CreationDate = r.CreationDate.ToString("o"),
};

JavaScript で

JSON を取得した直後に、ISO 8601 日付文字列を受け入れる Date コンストラクターを使用して、日付を JavaSript Date オブジェクトに修正します...

$.getJSON(
    "MyRestService.svc/myinfo",
    function (data) {
        $.each(data.myinfos, function (r) {
            this.CreatedOn = new Date(this.CreationDate);
        });
        // Now each myinfo object in the myinfos collection has a CreatedOn field that is a real JavaScript date (with timezone intact).
       alert(data.myinfos[0].CreationDate.toLocaleString());
    }
)

JavaScript の日付を取得したら、 toDateStringtoLocaleStringなどの便利で信頼性の高いすべての Date メソッドを使用できます。

于 2012-05-24T19:01:41.737 に答える
16
var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 

jQuery ライブラリを使用しない別のオプションはありますか?

于 2009-09-24T11:38:51.997 に答える
11

これも役立つ場合があります。

 function ToJavaScriptDate(value) { //To Parse Date from the Returned Parsed Date
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
    }
于 2016-02-02T11:57:13.093 に答える
10

私はこのような日付を取得します:

"/Date(1276290000000+0300)/"

一部の例では、日付の形式がわずかに異なります。

"/Date(12762900000000300)/"
"Date(1276290000000-0300)"

そこで、次の RegExp を思いつきました。

/\/+Date\(([\d+]+)\)\/+/

最終的なコードは次のとおりです。

var myDate = new Date(parseInt(jsonWcfDate.replace(/\/+Date\(([\d+-]+)\)\/+/, '$1')));

それが役に立てば幸い。

更新: Microsoft からこのリンクを見つけました: How do I Serialize Dates with JSON?

これは私たち全員が探しているもののようです。

于 2010-09-26T11:07:09.977 に答える
10

JavaScript ライブラリmoment.jsを使用することもできます。これは、さまざまなローカライズされた形式を処理し、日付値を使用して他の操作を実行する予定がある場合に役立ちます。

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

    function (result) {
        $("#AuthMerchId").text(result.AuthorizationMerchantId);
        $("#SttlMerchId").text(result.SettlementMerchantId);
        $("#CreateDate").text(moment(result.AppendDts).format("L"));
        $("#ExpireDate").text(moment(result.ExpiresDts).format("L"));
        $("#LastUpdate").text(moment(result.LastUpdateDts).format("L"));
        $("#LastUpdatedBy").text(result.LastUpdateNt);
        $("#ProcessIn").text(result.ProcessIn);
    }
    );
    return false;
}

ローカリゼーションのセットアップは、構成ファイル (momentjs.com で入手できます) をプロジェクトに追加して言語を構成するのと同じくらい簡単です。

moment.lang('de');
于 2013-05-15T06:21:00.740 に答える
10

以下は、JSON 日付を解析するための非常に単純なソリューションです。必要に応じて以下の機能を使用してください。パラメータとしてフェッチされた JSON 形式の Date を以下の関数に渡すだけです。

function JSONDate(dateStr) {
    var m, day;
    jsonDate = dateStr;
    var d = new Date(parseInt(jsonDate.substr(6)));
    m = d.getMonth() + 1;
    if (m < 10)
        m = '0' + m
    if (d.getDate() < 10)
        day = '0' + d.getDate()
    else
        day = d.getDate();
    return (m + '/' + day + '/' + d.getFullYear())
}

function JSONDateWithTime(dateStr) {
    jsonDate = dateStr;
    var d = new Date(parseInt(jsonDate.substr(6)));
    var m, day;
    m = d.getMonth() + 1;
    if (m < 10)
        m = '0' + m
    if (d.getDate() < 10)
        day = '0' + d.getDate()
    else
        day = d.getDate();
    var formattedDate = m + "/" + day + "/" + d.getFullYear();
    var hours = (d.getHours() < 10) ? "0" + d.getHours() : d.getHours();
    var minutes = (d.getMinutes() < 10) ? "0" + d.getMinutes() : d.getMinutes();
    var formattedTime = hours + ":" + minutes + ":" + d.getSeconds();
    formattedDate = formattedDate + " " + formattedTime;
    return formattedDate;
}
于 2012-08-09T12:14:59.823 に答える
9

日付の ISO 規格を確認してください。このような種類:

yyyy.MM.ddThh:mm

となり2008.11.20T22:18ます。

于 2008-11-20T09:18:59.753 に答える
9

これはイライラします。私の解決策は、ASP.NET の JavaScriptSerializer によって生成された値から「/ と /」を解析して、JSON に日付リテラルがない場合でも、ブラウザーによって日付として解釈されるようにすることでした。欲しいです:{"myDate":Date(123456789)}

DateTime のカスタム JavaScriptConverter?

Roy Tinker のコメントの正確性を強調しなければなりません。これは正当な JSON ではありません。JavaScriptの問題になる前に問題を取り除くのは、サーバーの汚い、汚いハックです。JSON パーサーを詰まらせます。離陸に使っていましたが、これはもう使っていません。ただし、他の場所で述べたように、サーバーが日付をフォーマットする方法、たとえば ISO を変更することが最善の答えだと思います。

于 2010-10-14T05:02:46.490 に答える
8

参考までに、サーバー側で Python を使用している場合: datetime.datetime().ctime() は、「new Date()」によってネイティブに解析可能な文字列を返します。つまり、(datetime.datetime.now などを使用して) 新しい datetime.datetime インスタンスを作成する場合、その文字列を JSON 文字列に含めることができ、その文字列を最初の引数として Date コンストラクターに渡すことができます。私はまだ例外を見つけていませんが、厳密にテストしていません。

于 2010-07-08T01:19:36.757 に答える
8

Mootools ソリューション:

new Date(Date(result.AppendDts)).format('%x')

mootools-more が必要です。Firefox 3.6.3 および IE 7.0.5730.13 で mootools-1.2.3.1-more を使用してテスト済み

于 2010-05-13T08:02:43.273 に答える
8

.NETが返されたら...

return DateTime.Now.ToString("u"); //"2013-09-17 15:18:53Z"

そしてJavaScriptで...

var x = new Date("2013-09-17 15:18:53Z");
于 2013-09-17T19:22:04.530 に答える
8

遅い投稿ですが、この投稿を検索した人のために。

これを想像してください:

    [Authorize(Roles = "Administrator")]
    [Authorize(Roles = "Director")]
    [Authorize(Roles = "Human Resources")]
    [HttpGet]
    public ActionResult GetUserData(string UserIdGuidKey)
    {
        if (UserIdGuidKey!= null)
        {
            var guidUserId = new Guid(UserIdGuidKey);
            var memuser = Membership.GetUser(guidUserId);
            var profileuser = Profile.GetUserProfile(memuser.UserName);
            var list = new {
                              UserName = memuser.UserName,
                              Email = memuser.Email ,
                              IsApproved = memuser.IsApproved.ToString() ,
                              IsLockedOut = memuser.IsLockedOut.ToString() ,
                              LastLockoutDate = memuser.LastLockoutDate.ToString() ,
                              CreationDate = memuser.CreationDate.ToString() ,
                              LastLoginDate = memuser.LastLoginDate.ToString() ,
                              LastActivityDate = memuser.LastActivityDate.ToString() ,
                              LastPasswordChangedDate = memuser.LastPasswordChangedDate.ToString() ,
                              IsOnline = memuser.IsOnline.ToString() ,
                              FirstName = profileuser.FirstName ,
                              LastName = profileuser.LastName ,
                              NickName = profileuser.NickName ,
                              BirthDate = profileuser.BirthDate.ToString() ,
            };
            return Json(list, JsonRequestBehavior.AllowGet);
        }
        return Redirect("Index");
    }

ご覧のとおり、「自動」ジェネリックを作成するために C# 3.0 の機能を利用しています。少し怠け者ですが、私はそれが好きで、うまくいきます。注意: Profile は、Web アプリケーション プロジェクト用に作成したカスタム クラスです。

于 2009-10-23T06:39:45.783 に答える
8

ページにjQuery UIプラグインを追加します。

function DateFormate(dateConvert) {
    return $.datepicker.formatDate("dd/MM/yyyy", eval('new ' + dateConvert.slice(1, -1)));
};
于 2012-06-29T12:01:04.050 に答える
8
var obj = eval('(' + "{Date: \/Date(1278903921551)\/}".replace(/\/Date\((\d+)\)\//gi, "new Date($1)") + ')');
var dateValue = obj["Date"];
于 2011-07-01T08:07:32.410 に答える
4

これは正規表現を使用し、同様に機能します。

var date = new Date(parseInt(/^\/Date\((.*?)\)\/$/.exec(jsonDate)[1], 10));
于 2014-08-25T16:44:24.803 に答える
4

ちなみに、KendoUI は Microsoft JSON 日付の変換をサポートしています。したがって、プロジェクトに「KendoUI」への参照がある場合は、単に使用できます

var newDate = kendo.parseDate(jsonDate);
于 2013-11-27T09:02:32.557 に答える
3

これを試して...

function formatJSONDate(jsonDate) {
            var date = jsonDate;
            var parsedDate = new Date(parseInt(date.toString().substring(6)));
            var newDate = new Date(parsedDate);
            var getMonth = newDate.getMonth() + 1;
            var getDay = newDate.getDay();
            var getYear = newDate.getFullYear(); 

            var standardDate = (getMonth<10 ? '0' : '') + getMonth + '/' + (getDay<10 ? '0' : '') + getDay + '/' + getYear;
            return standardDate;
        }

getYear() は、年 - 1900 を返します。これは、しばらく前から廃止されています。getFullYear() を使用することをお勧めします。

于 2018-07-06T10:43:09.180 に答える
2

JSON 日付を JavaScript 日付に変換するのは簡単です。

var s = Response.StartDate;     
s = s.replace('/Date(', '');

s = s.replace(')/', '');

var expDate = new Date(parseInt(s));
于 2012-12-10T09:39:06.703 に答える
-6

JSON は、おそらく何らかのオブジェクト (つまり、その文字列表現) を返すはずです。

"{ myDate : Date(1224043200000) }"

jQuery を使用すると、次の方法でデータ オブジェクトにアクセスできます。

$.get(
    "myJSONFile.php",
    function (data) {
        // data.myDate will be a date object.

        // to show in a short date format (eg: dd/mm/yyyy)
        alert (
            data.myDate.getDate() + "/"
            + (data.myDate.getMonth() + 1) + "/"
            + data.myDate.getFullYear()
        ); // alerts: "15/10/2008"
    }
);
于 2008-10-16T03:47:12.733 に答える