【问题标题】:converting .NET DateTime object to Javascript Date object将 .NET DateTime 对象转换为 Javascript Date 对象
【发布时间】:2011-06-24 18:38:32
【问题描述】:

我有以下问题:

我从 SQL Server 检索一个 DateTime 对象并通过 JSON(使用 $.ajax)将它传递给 Javascript。我在尝试将检索到的对象转换为 javascript 中的 Date 对象时遇到了困难。 检索到的对象是值“/Date(615592800000)/”的字符串。我认为价值是一个时代。

我的问题是,除了使用正则表达式选择纪元值然后创建一个新的 Date 对象之外,还有其他检索日期对象的方法吗?

我对 JS 还很陌生,因此我们将不胜感激。

【问题讨论】:

    标签: c# javascript jquery json


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。不完全是我想要的,但这非常简单且可用。
    【解决方案2】:

    试试这个。将您获得的日期字符串传递给以下函数。它将为您提供 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; 
        }
    

    【讨论】:

      【解决方案3】:

      这是因为作为标准的 JSON 没有 DateTime 格式 - 供应商可以随意标记它。 WCF 有这种奇怪的 /Date()/ 格式 几个月前我遇到了这个问题。 使用 Jquery 和 Jquery UI 它看起来像这样。 controlId 是带有

      的元素的标识符
      var converted = eval(original.replace(/\/Date\((\d+)\)\//gi, 'new Date($1)'));
      

      【讨论】:

        【解决方案4】:

        正则表达式方法是完全正确的方法。

        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

        【讨论】:

          猜你喜欢
          • 2011-11-21
          • 1970-01-01
          • 2014-08-12
          • 1970-01-01
          • 2011-10-19
          • 1970-01-01
          • 2011-01-31
          • 1970-01-01
          相关资源
          最近更新 更多