Java androidunix时间戳转换器
在我的android应用程序中,我以这种方式创建时间戳:Java androidunix时间戳转换器,java,android,date,timestamp,Java,Android,Date,Timestamp,在我的android应用程序中,我以这种方式创建时间戳: final BackupInfo backupInfo = new BackupInfo(description, System.currentTimeMillis(), backupContacts.size()); 例如,使用System.currentTimeMillis() 现在,我使用以下方法将其转换回最新格式: public static String getDate(long time) { Calendar c
final BackupInfo backupInfo = new BackupInfo(description, System.currentTimeMillis(), backupContacts.size());
例如,使用System.currentTimeMillis()
现在,我使用以下方法将其转换回最新格式:
public static String getDate(long time)
{
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time);
String date = DateFormat.format("dd-MM-yyyy HH:mm:ss", cal).toString();
return date;
}
而且效果很好
但是现在我从服务器收到一个时间戳,而从getDate
收到的日期字符串不是正确的日期
实际案例:
我的应用程序生成此时间戳:1403022230766
getDate
返回此日期:17-06-2014 05:23:50
,这在我看来是正确的
现在问题来了,我从服务器上得到了这个时间戳:1403022360
getdate
返回此日期:16-01-1970 18:43:42
这是完全错误的,它应该接近我的应用程序生成的时间戳
服务器返回的时间戳大小减少了3位。但是如果我去一个在线转换器,比如我把1403022360
(由服务器生成的TS)放进去,我会得到一个正确的日期
有人能解释一下为什么会有这种差异,我的
getDate
方法有什么错误,我无法解码从服务器收到的时间戳吗?您的服务器以秒为单位返回时间戳,所以乘以1000就得到毫秒
在线转换器工作正常,因为它们假设,如果数字足够大,则以毫秒为单位,如果短,则以秒为单位
Java/Android日期都是
长的
类型,因此它们可以保留毫秒以获得更高的精度。您的服务器正在以秒为单位返回时间戳,因此乘以1000可以得到毫秒
在线转换器工作正常,因为它们假设,如果数字足够大,则以毫秒为单位,如果短,则以秒为单位
Java/Android日期都是
长的
类型,因此它们可以保留毫秒以获得更高的精度。您的服务器正在以秒为单位返回时间戳,因此乘以1000可以得到毫秒
在线转换器工作正常,因为它们假设,如果数字足够大,则以毫秒为单位,如果短,则以秒为单位
Java/Android日期都是
长的
类型,因此它们可以保留毫秒以获得更高的精度。您的服务器正在以秒为单位返回时间戳,因此乘以1000可以得到毫秒
在线转换器工作正常,因为它们假设,如果数字足够大,则以毫秒为单位,如果短,则以秒为单位
Java/Android日期都是
长的
类型,因此它们可以保留毫秒以提高精度。是的,你是对的!它正在工作,我会在最短时间内接受你的回答:)谢谢!是的,你说得对!它正在工作,我会在最短时间内接受你的回答:)谢谢!是的,你说得对!它正在工作,我会在最短时间内接受你的回答:)谢谢!是的,你说得对!它正在工作,我会在最短时间内接受你的回答:)谢谢!