在我的.js文件中,我调用了C#Web服务。

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字段之一,以以下格式返回日期:

/Date(1467878700750)/


现在,我需要从该字符串中获取日,月,年,小时,分钟,秒和毫秒。
我如何获得这些信息?

提前致谢

最佳答案

自大纪元(1970年1月1日格林威治标准时间)以来,这看起来像毫秒数。在JavaScript中,您可以通过以下方式为其创建Date实例:


从字符串中隔离数字
将其转换为数字
然后使用new Date,它自从Epoch开始接受毫秒:


例如。,



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





如果需要,可以使用reviver函数在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对象的方式。)

您可以通过设置dataType: "text"而不是dataType: "json"来更改Query,以告诉jQuery不为您解析它,然后使用带有该Reviver的JSON.parse自己解析它。

关于javascript - 如何正确格式化从Web服务C#返回的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38242329/

10-09 17:26
查看更多