System.currentTimeMillis()返回错误的日期

时间:2015-07-08 21:48:45

标签: android time timestamp sharedpreferences unix-timestamp

我正在尝试将当前时间保存到共享首选项中,但出于某种原因,当前时间是一个荒谬的数量,在未来的47486年。

我已经检查了设备本身的日期设置和正确的日期,我无法在任何地方找到这样的问题。我希望有人可以帮助我。

以下是问题所在:

public static void setLastSyncSucceeded(final Context context) {
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
     long currentTime = System.currentTimeMillis();
     sp.edit().putLong(PREF_LAST_SYNC_SUCCEEDED, currentTime).commit();
}

所以基本上在我调试时我注意到currentTime1436374427923 Tue, 23 Nov 47486 00:38:43 GMT ...

3 个答案:

答案 0 :(得分:4)

你所拥有的值是毫秒(如declare module Express { export interface Session { returnTo: string; } } 中所示),你将它视为几秒钟。

将它除以一千(即将它变成几秒),你得到更明智的currentTimeMillis值。

答案 1 :(得分:0)

System.currentTimeMillis()
返回自1970-01-01 00:00:00 UTC以来的毫秒数。

UTC是世界上常见的时间标准。它也被认为是格林威治标准时间(格林威治标准时间) - 不是同样的事情 - 。

因此,如果您处于不同的时区,则应考虑到这一点。

答案 2 :(得分:0)

如果你想从当前的毫秒获得格式化的日期,那么你可以这样做:

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy HH:mm");
String formattedActualDate = sdf.format(new Date());

或轻松:

public static void setLastSyncSucceeded(final Context context) {
     SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
     long currentTime = System.currentTimeMillis();
     sp.edit().putLong(PREF_LAST_SYNC_SUCCEEDED, formattedActualDate).commit();
}

最后:

{{1}}