2011-06-24 52 views
5

Tôi có vấn đề sau:chuyển đổi đối tượng DateTime của Net thành đối tượng Ngày Javascript

Tôi lấy đối tượng DateTime từ SQL Server và chuyển nó qua JSON (sử dụng $ .ajax) sang Javascript. Tôi đã gặp khó khăn khi cố gắng chuyển đổi đối tượng đã truy xuất sang đối tượng Date trong javascript. Đối tượng đã truy xuất là một chuỗi giá trị "/ Date (615592800000) /". Tôi nghĩ rằng giá trị là một thời đại.

Câu hỏi của tôi là, có một cách khác để truy lục đối tượng ngày hơn để sử dụng regex để chọn giá trị epoch và sau đó tạo đối tượng Ngày mới không?

Tôi khá mới đối với JS, vì vậy mọi trợ giúp sẽ được đánh giá cao.

Trả lời

6

không phải là tôi biết ... Đây là chức năng Tôi đang sử dụng, chỉ trong trường hợp ...

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

Thx. Không chính xác những gì tôi đang tìm kiếm, nhưng điều này khá đơn giản và có thể sử dụng được. –

0

Điều này là do JSON như là tiêu chuẩn không có một định dạng DateTime - nhà cung cấp có thể tự do đánh dấu nó xuống như họ muốn. WCF có định dạng kỳ lạ của/Date()/ Tôi phải đối mặt với điều này chỉ một vài tháng trước đây. Sử dụng giao diện người dùng Jquery và giao diện người dùng Jquery sẽ trông giống như vậy. controlId là mã định danh của một phần tử có

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

Cách regex là cách hoàn toàn chính xác.

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 } }); 

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

0

Hãy thử điều này. Vượt qua chuỗi ngày mà bạn nhận được để các chức năng dưới đây. Nó sẽ cung cấp cho bạn đối tượng ngày 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; 
    } 
+0

Mã này không hợp lệ (lỗi cú pháp) – meffect

Các vấn đề liên quan