繁体   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