读书人

时间戳经json后长度不对如何解决

发布时间: 2013-10-29 12:07:57 作者: rapoo

时间戳经json后长度不对,怎么解决?
是这样,
我一个Timestamp型数据 比如 2013-10-16 11:50:00
经json转化后传递到js里 长度不对。
正常是13818954000 但转换后确多了2个0
由于结构,在action这层转化不现实,只得在js里面转换。
开始想到多2个0,我可以截取,但我试了其他时间 长度都不一样

现在碰到的问题是 转换过后的 字符串型,怎么知道多长才是正确的? timestamp json js
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

是这样,
我一个Timestamp型数据 比如 2013-10-16 11:50:00
经json转化后传递到js里 长度不对。
正常是13818954000 但转换后确多了2个0
由于结构,在action这层转化不现实,只得在js里面转换。
开始想到多2个0,我可以截取,但我试了其他时间 长度都不一样

现在碰到的问题是 转换过后的 字符串型,怎么知道多长才是正确的?

正常转化的话应该不会多两个0的,所以很想知道你转换的方式。。。

我感觉你的问题应该是输入格式不一样,
比如有的输入2013-10-16 11:50:00
有的输入
2013年10月25日22:07:19
这样吧。导致导出不一样?
JS中timestamp的转换成data
http://blog.163.com/lijy_980720@126/blog/static/75574626201261783343834/


输入格式没问题 ,我只是一个对象,里面有这个属性的字段,然后是多个此类对象 放在list里,
直接通过JSONArray jsonArray = JSONArray.fromObject(list);转的,打印出来的就多0

你把这一段的代码发上来我测试下,我相信json不会犯这么低级的错误,转换时间后竟然多两个0.
即使多个对象,也会以,来分开的


list1 = tar.queryor(); //这是查询一层,是没问题的

JSONArray jsonArray = JSONArray.fromObject(list1); //这是转换
比如CreateTime字段 :
System.out.println(list1.get(1).getCreateTime());
打印结果为:2013-10-16 11:50:00.0
System.out.println(jsonArray);
打印结果(CreateTime字段): "createTime":{"date":16,"day":3,"hours":11,"minutes":50,"month":9,"nanos":0,"seconds":0,"time":1381895400000,"timezoneOffset":-480,"year":113},





JSONArray jsonArray = JSONArray.fromObject(list1); //这是转换


引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

是这样,
我一个Timestamp型数据 比如 2013-10-16 11:50:00
经json转化后传递到js里 长度不对。
正常是13818954000 但转换后确多了2个0
由于结构,在action这层转化不现实,只得在js里面转换。
开始想到多2个0,我可以截取,但我试了其他时间 长度都不一样

现在碰到的问题是 转换过后的 字符串型,怎么知道多长才是正确的?

正常转化的话应该不会多两个0的,所以很想知道你转换的方式。。。

我感觉你的问题应该是输入格式不一样,
比如有的输入2013-10-16 11:50:00
有的输入
2013年10月25日22:07:19
这样吧。导致导出不一样?
JS中timestamp的转换成data
http://blog.163.com/lijy_980720@126/blog/static/75574626201261783343834/


输入格式没问题 ,我只是一个对象,里面有这个属性的字段,然后是多个此类对象 放在list里,
直接通过JSONArray jsonArray = JSONArray.fromObject(list);转的,打印出来的就多0

你把这一段的代码发上来我测试下,我相信json不会犯这么低级的错误,转换时间后竟然多两个0.
即使多个对象,也会以,来分开的


list1 = tar.queryor(); //这是查询一层,是没问题的

JSONArray jsonArray = JSONArray.fromObject(list1); //这是转换
比如CreateTime字段 :
System.out.println(list1.get(1).getCreateTime());
打印结果为:2013-10-16 11:50:00.0
System.out.println(jsonArray);
打印结果(CreateTime字段): "createTime":{"date":16,"day":3,"hours":11,"minutes":50,"month":9,"nanos":0,"seconds":0,"time":1381895400000,"timezoneOffset":-480,"year":113},





JSONArray jsonArray = JSONArray.fromObject(list1); //这是转换
这里,你把输入的
list1的值
和输出的jsonArray的值
发出来


list的值 我就直接在数据库查询了 请注意那个图片

晕死,让你忽悠了我一下午。。。
1381895400000
就是正确的。。。

运行
long time = new Date().getTime();
System.out.println(time);
结果:
1382792101357
都是十四位的。。。
我说JS不会转换错嘛。

好吧 那我在js里 能得到这个1381895400000
但是怎么转换成20xx-xx-xx xx:xx格式...


输入时间,格式,转化为字符串。。

<script language="javascript">
function gettimestr()
{
var time=formartDate("yyyy-MM-dd hh:mm:ss",1381895400000);//这里输入格式和时间


alert(time);
return false;
}
function formartDate(dataFormate, time) {
var date = new Date();
date.setTime(time);
return date.pattern(dataFormate);
}
Date.prototype.pattern = function(fmt) {
var o = {
"M+" : this.getMonth() + 1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
"H+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth() + 3) / 3), //季度
"S" : this.getMilliseconds()
//毫秒
};
var week = {
"0" : "日",
"1" : "一",
"2" : "二",
"3" : "三",
"4" : "四",
"5" : "五",
"6" : "六"
};
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
.substr(4 - RegExp.$1.length));
}
if (/(E+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1,
((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周")
: "")
+ week[this.getDay() + ""]);
}
if (/(e+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1,
((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "星期" : "周")
: "")
+ this.getDay());
}
for ( var k in o) {
if (new RegExp("(" + k + ")").test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
: (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
}
</script>

<form name="form1" method="post" action="register.action">
<div class="form-item">
<div></div>
<div>
<h3><strong>用户注册</strong></h3>
<br>
<div>
<input id="inm2" type="submit" value="注册" onClick="return gettimestr();"/>


<span>* 为必填内容</span>
</div>

</div>
<div></div>
</div>
</form>
</html>




时间戳经json后长度不对,如何解决

郁闷,我把这几个方法合在一起 怎么就错的 。。。Date.prototype.pattern = function(fmt) { 这个是什么意思。。


等于自己实现了一个format方法的方法而已。。
你每个js单独的挨个测测,应该就能找到问题了。。
有时候,其实就是一个逗号而已。

读书人网 >Java Web开发

热点推荐