【问题标题】:Android unix timestamp - Converter [duplicate]Android unix时间戳 - 转换器[重复]
【发布时间】:2014-08-07 19:35:58
【问题描述】:

在我的 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 方法中做错了什么,我无法解码从服务器接收到的时间戳?

【问题讨论】:

    标签: java android date timestamp


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,你是对的!它正在工作,我会在最短时间过去后立即接受您的答复:) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-06-03
    • 2013-12-14
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    相关资源
    最近更新 更多