首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2013-10-29 
时间戳经json后长度不对,怎么解决?是这样,我一个Timestamp型数据 比如 2013-10-16 11:50:00经json转化后传

时间戳经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单独的挨个测测,应该就能找到问题了。。
有时候,其实就是一个逗号而已。

热点排行