JS中,JSON数组中日期格式转换的问题

JavaScript013

JS中,JSON数组中日期格式转换的问题,第1张

如果你的数组如你所说的这样,可以用下面的方式,其实核心的东西没有变,只是获取的方法不同,

var date = [

{"riqi":"2017-10-19","xinpai_db":"8","xinpai_gz":"8"},

{"riqi":"2017-10-20","xinpai_db":"3","xinpai_gz":"0"},

{"riqi":"2017-10-21","xinpai_db":"0","xinpai_gz":"0"}

]

for(var i=0i<date.lengthi++){

date[i]['riqi']= date[i]['riqi'].replace(/-/g,"/")

}

在MVC应用程序中,服务器端用C#将日期转为Json格式:

客户端还原日期的方法:

new Date(parseInt(WriteTime.substr(6)))

后台**Controller.java,返回jsonStr格式的数据data

Map<String, Object> hzMap=null  //Map型数据为{Rows=[{PKID=f62ec3a0-93cd-11e9-97aa-54e1adb13ebe, DQID=1, QX=1, LXR=2, LXDH=18731197300, XXDZ=1, YYZZSMJ=1, YBNSRZM=1, KHJB=1, BFCS=1, SFYSB=否, SBSM=1, QTCPYL=1, CPYL=1, ZJBFSJ=2019-06-21 10:40:00.0, BZ=1}, Total=1}

String data = JSON.toJSONString(hzMap) //Map型数据转换成jsonStr;hzMap其中的String型日期格式,被转换成long型时间戳{"Rows":[{"PKID":"f62ec3a0-93cd-11e9-97aa-54e1adb13ebe","DQID":"1","QX":"1","LXR":"2","LXDH":"18731197300","XXDZ":"1","YYZZSMJ":"1","YBNSRZM":"1","KHJB":1,"BFCS":1,"SFYSB":"否","SBSM":"1","QTCPYL":1,"CPYL":1,"ZJBFSJ":1561084800000,"BZ":"1"},"Total":1}

前台**.jsp,使用legerUI插件

<script type="text/javascript">

//表头 配置column  参考链接https://www.cnblogs.com/leoxie2011/archive/2012/01/17/2324485.html#lable1Grid01_04

var gridColumn =[ 

//{display: '序号', name: 'currentrow', align: 'center', width: 35,frozen:true,isSort:false} ,     

{display: '客户id',name: 'PKID',align: 'left',width:300,hide:true} ,

{display: '地区',name: 'DQID',align: 'left',width:120} ,

           {display: '区县',name: 'QX',align: 'left',width:120} ,

           {display: '联系人',name: 'LXR',align: 'left',width:100} ,

           {display: '联系电话',name: 'LXDH',align: 'center',width:95} ,

           {display: '详细地址',name: 'XXDZ',align: 'center',width:60} ,

           {display: '营业执照扫描件',name: 'YYZZSMJ',align: 'left',width:110} ,

           {display: '一般纳税人证明',name: 'YBNSRZM',align: 'center',width:60},

           {display: '客户级别',name: 'KHJB',align: 'center',width:60} ,

           {display: '拜访次数(钻)',name: 'BFCS',align: 'left',width:120} ,

           {display: '是否有设备',name: 'SFYSB',align: 'left',width:120} ,

           {display: '设备说明',name: 'SBSM',align: 'left',width:200} ,

           {display: '其他产品用量(车/月)',name: 'QTCPYL',align: 'center',width:130} ,

           {display: '产品用量(车/月)',name: 'CPYL',align: 'center',width:120} ,

           {display: '最近拜访时间',name: 'ZJBFSJ',align: 'left',width:128,type: "date",render : function (record, rowindex, value, column) {

                   //this     这里指向grid

                   //record   行数据

                   //rowindex 行索引

                   //value    当前的值,对应record[column.name]

                   //column   列信息

                   //return value  //返回此单元格显示的HTML内容(一般根据value和row的内容进行组织)

/*这里后台返回来的是返回 1970 年 1 月 1 日至今的毫秒数(即时间戳),例如value="1561084800000"。

可以先用js方法转换为date,然后利用js格式化时间yyyy-MM-ddhh:mm:ss,显示为"2019-06-21 10:40:00"。*/

                      if(value){

alert(value)//浏览器弹窗显示long型时间戳1561084800000

var val = new Date(value)//时间戳转日期

//alert(val)//浏览器弹窗显示日期Tue Jun 25 2019 16:24:00 GMT+0800 (中国标准时间)

//下面调用js格式化时间方法,可自定义格式化时间方法。方法功能是 日期转字符串。

return val.format("yyyy-MM-dd hh:mm:ss")

}

                return ""

                }},

           {display: '备注(常用规格,产品使用情况、客户报价等信息)',name: 'BZ',align: 'center',width:300},

   ]

//列表查询json数据;并在表格处,列表显示数据

function kehuguanli_grid() {

gridparams = formParamJSON("kehuguanli_form")

//在表格处,列表显示数据

grid = $("#kehuguanli_maingrid").ligerGrid({

rownumbers : true,

frozenRownumbers : true,

rownumbersColWidth : 20,

checkbox : true,

columns : gridColumn,

sortName : "",

width : "100%",

height : "100%",

heightDiff : -3,

fixedCellHeight : false,

isScroll : true,

url : "${basepath}kehuguanli/queryKeHuListJSON.action",

parms : gridparams,

method : "post",

dataAction : "server",

root : "Rows",

record : "Total",

pageParmName : "pageNum",

pagesizeParmName : "numPerPage",

sortnameParmName : "orderField",

sortorderParmName : "orderDirection",

usePager : true,

page : 1,

pageSize : 20,

pageSizeOptions : [ 10, 20, 50, 100 ],

//dateFormat: "yyyy-MM-dd hh:mm:ss",//全局设置时间样式,不管用!

onLoadData : function() {

exportExcelButton('${UUID}')

//exportExcelButtonParameter('${UUID}')

},

onSelectRow : function(rowdata, rowid, rowobj) {

//alert(rowdata.zydm)

},

onUnSelectRow : function(rowdata, rowid, rowobj) {

//alert(rowdata.zydm)

}

})

}

/** 

 * js格式化时间的方法。

 * Date的扩展,将 Date 转化为指定格式的String:

 * 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符 

 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 

 */

Date.prototype.format = function(format) {

var o = {

"M+" : this.getMonth() + 1, // 月

"d+" : this.getDate(), // 日

"h+" : this.getHours(), // 小时

"m+" : this.getMinutes(), // 分钟

"s+" : this.getSeconds(), // 秒

"q+" : Math.floor((this.getMonth() + 3) / 3), // 季度

"S" : this.getMilliseconds() //毫秒

}

if (/(y+)/.test(format)){

format = format.replace(RegExp.$1, (this.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//返回字符串"2019-06-21 10:40:00"

}

</script>