zoukankan      html  css  js  c++  java
  • 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()一下才能得到里面的数据
  • 相关阅读:
    C# Task.Run 和 Task.Factory.StartNew 区别
    数据库面试题(实时更新)
    python面试题(实时更新)
    opencv简介以及环境搭建
    Django分页器
    django的开发环境
    Django简介以及MVC模式
    Virtualbox修改虚拟机分配内存的大小
    深浅拷贝
    react-native-typescript-项目环境搭建
  • 原文地址:https://www.cnblogs.com/netact/p/2172157.html
Copyright © 2011-2022 走看看