Android unix时间戳 - 转换器

时间:2014-06-17 17:18:23

标签: java android date timestamp

在我的Android应用程序中,我以这种方式创建时间戳:

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位数。但是,如果我转到在线转换器,例如this one,我放1403022360(服务器生成的TS),我得到一个正确的日期。

任何人都可以解释一下为什么这种差异以及我在getDate方法中做错了什么我无法解码从服务器收到的时间戳?

1 个答案:

答案 0 :(得分:3)

您的服务器以秒为单位返回时间戳,因此乘以1000即可获得毫秒数。

在线转换器工作正常,因为他们假设如果数量足够大,那么它是以毫秒为单位,如果它很短,那么就是以秒为单位。

Java / Android日期都是long类型,因此它们可以保持毫秒数以获得更高的精度。