2016-07-07 82 views
0

返回在我的.js文件中,我調用一個c#web服務。如何正確地格式化日期,從web服務c#

function getDetailsFromDb(id_mac, id_instance) { 
$.ajax({ 
    type: "POST", 
    url: "webMethods/GetData.asmx/getServicesById", 
    dataType: "json", 
    data: JSON.stringify({ 
     idMacchina: id_mac, 
     idIstanza: id_instance 
    }), 
    contentType: "application/json; charset=utf-8", 
    success: function (msg) { 
     var itemsLoaded = msg.d; 
    }, 
    error: function (err) { 
     alert(err); 
    } 
}); 

該函數返回一組對象,我從我的數據庫中獲取。 theese領域之一,返回日期,在followning格式:

/Date(1467878700750)/ 

現在,我需要從字符串,日,月,年,小時,分鐘,秒和毫秒來獲得。 我怎樣才能得到這些信息?

在此先感謝

+0

相反,如果你想在解析JS該值有用:http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx –

回答

3

這看起來像從紀元(午夜GMT 1970年1月1日)毫秒數。

  1. 從字符串
  2. 隔離數它轉換爲數字
  3. 然後使用new Date,它接受以來的毫秒數最時期:在JavaScript中,你可以爲它通過創建一個Date實例:

例如,

var theString = "/Date(1467878700750)/"; 
 
var theNumber = +theString.match(/\/Date\((\d+)\)\//)[1]; 
 
console.log(theNumber); 
 
var dt = new Date(theNumber); 
 
console.log(dt.toString());

可以轉換JSON的時候,如果你喜歡,用齊磊函數轉換他們的所有在JSON:

var rexDateString = /^\/Date\((\d+)\)\/$/; 
 
function dateHandlingReviver(k, v) { 
 
    var match; 
 
    if (typeof v === "string") { 
 
    match = v.match(rexDateString); 
 
    if (match) { 
 
     return new Date(+match[1]); 
 
    } 
 
    } 
 
    return v; 
 
} 
 

 
var json = '{"date1":"/Date(1467878700750)/","obj":{"date2":"/Date(1467871700750)/"}}'; 
 

 
var result = JSON.parse(json, dateHandlingReviver); 
 
console.log(result);

(注意: "2016-07-07T08:05:00.750Z"在上面的控制檯中顯示的那些日期就是Stack Snippets控制檯如何顯示Date對象。)

你會改變你的查詢,告訴jQuery的通過設置dataType: "text"而不是dataType: "json"解析它給你,然後使用JSON.parse與齊磊自己解析它。

+0

您好,我怎樣才能得到秒和毫秒嗎? – pasluc74669

+0

@ pasluc74669:在'Date'上使用各種方法,如'getSeconds'和'getMilliseconds'。 –