Android 时间戳转换成普通日期格式总是显示1970年的问题
2019-12-07 本文已影响0人
AR7_
问题一:
在对时间戳转换成普通日期格式时,使用了chinaz.com上提供的方法,发现总是显示1970年。
/**
* 时间戳转时间格式:例如:2017-01-01 14:20:22
* @param {number} timestamp 后端返回的时间戳(服务端时间)
*/
public static String timestampToTimeForService(int timestamp) {
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(timestamp* 1000));
return time;
}
分析:
因为timestampToTimeForService
函数的参数tiestamp
定义的是int
类型,后台返回的时间戳是10
位数字,但是我就怀疑是不是超出了int
类型的取值范围导致的转换失败?
解决:
其实很简单,只要在1000
后面加上L
,变成long
类型的数据就没问题了。
/**
* 时间戳转时间格式:例如:2017-01-01 14:20:22
* @param {number} timestamp 后端返回的时间戳(服务端时间)
*/
public static String timestampToTimeForService(int timestamp) {
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(timestamp* 1000));
return time;
}
问题二:
上面的问题以及解决了,但是和网站的转换对比,发现两者相差了将近13
个小时,因为我是用的Android
模拟器验证的这个数据,所以很大的可能就是因为时区
没有选对,可能不是选择的东八区
导致的,后来检查发现确实是如此。