簡體   English   中英

將 .NET DateTime 對象轉換為 Javascript Date 對象

[英]converting .NET DateTime object to Javascript Date object

我有以下問題:

我從 SQL Server 檢索一個 DateTime 對象並通過 JSON(使用 $.ajax)將它傳遞給 Javascript。 我在嘗試將檢索到的對象轉換為 javascript 中的 Date 對象時遇到了困難。 檢索到的對象是一串值“/Date(615592800000)/”。 我認為價值是划時代的。

我的問題是,除了使用正則表達式選擇紀元值然后創建一個新的 Date 對象之外,還有另一種檢索日期對象的方法嗎?

我對 JS 相當陌生,所以任何幫助將不勝感激。

不是我知道......這是我正在使用的功能,以防萬一......

function toDateFromJson(src) {
    return new Date(parseInt(src.substr(6)));
}

這是因為 JSON 作為標准沒有 DateTime 格式 - 供應商可以根據需要自由標記它。 WCF 有這種奇怪的 /Date()/ 格式,我幾個月前就遇到過這種情況。 使用 Jquery 和 Jquery UI,它看起來像那樣。 controlId 是元素的標識符

var converted = eval(original.replace(/\/Date\((\d+)\)\//gi, 'new Date($1)'));

正則表達式方式是完全正確的方式。

var msDateRegex = /"\\\/Date\((-?\d+)\)\\\/"/g;

var msDateJsonConverter = function(data) {
    return JSON.parse($.trim(data.replace(msDateRegex, '{"__date":$1}')), function(key, value) {
        return value && typeof value.__date == "number" ? new Date(value.__date) : value;
    });
};

$.ajaxSetup({ converters: { "text json": msDateJsonConverter } });

請參閱: http : //weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx

嘗試這個。 將您獲得的日期字符串傳遞給以下函數。 它將為您提供 JavaScript 日期對象。

function (val) {
        var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/;
        var reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/;


            if (val)) {
                        var a = reISO.exec(val);
                        if (a) {
                            val = new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]));
                            return val;
                        }
                        a = reMsAjax.exec(val);
                        if (a) {
                            var b = a[1].split(/[-+,.]/);
                            val = new Date(b[0] ? +b[0] : 0 - +b[1]);
                            return val;
                        }
                    }

       return val; 
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM