Java毫秒时间转换为ExtJS JavaScript Date对象异常问题咨询
解决Java秒级时间戳转ExtJS Date对象的问题
我来帮你搞定这个问题!你遇到的核心问题是时间戳单位不匹配:
- Java端返回的
1523357477是秒级时间戳(从1970年开始计算的总秒数) - 而JavaScript(包括ExtJS)的
Date构造函数要求传入的是毫秒级时间戳(总秒数×1000)
直接把秒数传给new Date(),自然会得到1970年的错误日期——因为这个数值太小了,只相当于1970年1月18日的时间。
正确的转换方式
只需要把Java返回的秒数乘以1000,转换成毫秒后再创建Date对象:
// 正确写法:将秒级时间戳转为毫秒 var v = new Date(1523357477 * 1000); // 此时v对应的就是正确的日期:Tue Apr 10 2018 14:21:17 GMT+0530 (India Standard Time)
为什么ExtJS的dateRenderer能正常转换?
Ext.util.Format.dateRenderer内部默认处理了这种单位差异——它会自动判断传入的时间戳是秒还是毫秒(或者根据你配置的格式做适配),所以直接传入秒级时间戳也能得到正确的格式化结果。如果想手动用它处理,也可以这样写:
var formattedDate = Ext.util.Format.date(new Date(1523357477 * 1000), 'd-m-Y H:i'); // 输出结果:10-04-2018 14:21
内容的提问来源于stack exchange,提问作者Vijay Vishwakarma
相关产品推荐
相关产品推荐

