Json 时间 转换为 Javascript 时间 Date Jquery 调用WCF

“/Date(1232035200000)/”

怎么转换成 javascript 的 Date 对象

做法:new Date(+/\d+/.exec(value)[1]);

value就是json字符串,字符串内容是 /Date(ticks)/,其中 ticks 表示从 epoch (UTC) 开始的毫秒数。因此,UTC 时间 1989 年 11 月 29 日 4:55:30 AM 将编码为“/Date(628318530718)/”。

.NET 使用runtime.serialization.json 生成的时间格式为:

"/Date(XXXXXXXXX+0800)/"

这类.NET格式的时间转换为Javascript的 时间 Date就不好用。

转换方式如下:

                  var tempstr ="/Date(XXXXXXXXX+0800)/";

                  var indexadd = tempstr.indexOf("+");
                  tempstr = tempstr.substring(6, indexadd);

                  Date resualt = new Date();
                  resualt.setTime(tempstr);

对转换完成的Javascript时间 ,可用如下方法来格式化

  function formatTime(t1, format) {
      var o = {
          "M+": t1.getMonth() + 1, //month
          "d+": t1.getDate(),    //day
          "h+": t1.getHours(),   //hour
          "m+": t1.getMinutes(), //minute
          "s+": t1.getSeconds(), //second
          "q+": Math.floor((t1.getMonth() + 3) / 3),  //quarter
          "S": t1.getMilliseconds() //millisecond
      }
      if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
 (t1.getFullYear() + "").substr(4 - RegExp.$1.length));
      for (var k in o) if (new RegExp("(" + k + ")").test(format))
          format = format.replace(RegExp.$1,
 RegExp.$1.length == 1 ? o[k] :
 ("00" + o[k]).substr(("" + o[k]).length));
      return format;
  }

用法 :formatTime(t1,"yyyy-MM-dd hh:mm:ss");          返回:1995-04-28 10:56:52

将页面中用到的数据保留2为小数:

  function toDecimal2(x) {
        var f=parseFloat(x);
        if (isNaN(f))
        { return " "; }
        var f = Math.round(x * 100) / 100;
        var s = f.toString();
        var rs = s.indexOf('.');
        if (rs < 0) {
            rs = s.length;
            s += ".00";
        }
        else if(s.length-rs==2)
        {
            s+="0";
        }
        return s;
  }

Jquery 调用WCF服务

  function GetWCFData(index) {
      $("#wcfdata").html("");
      var postdata ="{index:"+index.toString()+"}";
      $.ajax({
          type: "post",
          url: "/DataService.svc/GetPayments",
          contentType: "application/json;charset=utf-8",
          data: '{"index":' + index + "}",
          success: function (data) {

              var a = eval('(' + data.d + ')');

              //当前页项数
              $("#CurrentIndex").attr("value", a.PageIndex);
              if (a.PageIndex == 1) {
                  $("#PrePage").attr("disabled", "disabled");
                  $("#NextPage").removeAttr("disabled");
              } else if (a.PageIndex == a.TotalPageCount) {
                  $("#PrePage").removeAttr("disabled");
                  //$("#NextPage").attr("disable", "disable");
                  $("#NextPage").attr("disabled", "disabled");
              }
              else {
                  $("#PrePage").removeAttr("disabled");
                  $("#NextPage").removeAttr("disabled");
              }
              //alert(a.TotalSize.toString());
              $("#TotalPageCount").html(a.TotalPageCount.toString());
              $("#wcfdata").html(data.d.toString());
              var innerhtml = "";
              for (var i = 0; i < a.PaymentArray.length; i++) {
                  innerhtml += "<tr>";
                  innerhtml += '<td><input type="checkbox" id=' + a.PaymentArray[i].ID + ' name="PaymentCheckbox" value="' + a.PaymentArray[i].ID + '" /></td>';
                  innerhtml += '<td>' + a.PaymentArray[i].Country + '</td>';
                  innerhtml += '<td>' + a.PaymentArray[i].SPV + '</td>';
                  innerhtml += '<td>' + a.PaymentArray[i].Lands + '</td>';
                  innerhtml += '<td class="fr">' + a.PaymentArray[i].Year + '</td>';
                  innerhtml += '<td class="fr">' + a.PaymentArray[i].Month + '</td>';
                  innerhtml += '<td>' + a.PaymentArray[i].ExpenseAccount + '</td>';
                  innerhtml += '<td class="fr">' + toDecimal2(a.PaymentArray[i].Amount) + '</td>';
                  innerhtml += '<td>' + a.PaymentArray[i].Importor + '</td>';
                  var tempstr = a.PaymentArray[i].UpdateTime;
                  //var tempstr = "aa";
                  var indexadd = tempstr.indexOf("+");
                  tempstr = tempstr.substring(6, indexadd);
                  a.PaymentArray[i].UpdateTime = new Date();
                  a.PaymentArray[i].UpdateTime.setTime(tempstr);

                  innerhtml += '<td clss="fr">' + formatTime(a.PaymentArray[i].UpdateTime, "yyyy-MM-dd hh:mm:ss") + '</td>';
                  innerhtml += "</tr>";
              }
              $("#PaymentsList tr:gt(0)").remove();
              $("#PaymentsList").append(innerhtml);

          },
          cache: false
      });
  }

$.ajax(.....)是框架提供的一个调用ajax的方法,兼容目前大多数浏览器


url: '/WCFservice.svc/InsertRow'
这里是WCF的地址+方法名

contentType: 'text/json',
这是以JSON的方式POST数据,当然也可以用XML的方式(要配合WCF后端的定义)

data: '{"id":'+id+',"title":"'+title+'","content":"'+content+'"}',
数据必须按照InsertRow方法的签名传递(这里稍有不慎就出错了,而且js的调试比较难搞)
{"id":10,"title":"title1","content":"contentinfo"}

success: function(msg) {}
成功后的回调函数,msg参数是一个object类型的,要eval()一下才能得到里面的数据
原文地址:https://www.cnblogs.com/netact/p/2172157.html