我想在一个时区内将所有日期存储在我的云数据库中,然后为我的所有用户(其Android设备可能位于世界上的任何地方)存储日期,我希望将该日期转换并显示给他们,无论他们是什么默认的Android设置是。
Here它显示了如何使用以下代码将Java存储为代码中的Java:
System.currentTimeMillis()
1)但是,如何将日期“标准化”为UTC(这是我听到的每个人都说我应该做的事情)?
2)然后,在从Cloud DB检索到该日期之后,我如何使用Java将该UTC日期转换为安装该应用程序的设备的时区?
从我收集的内容来看,Android可能会自动执行这些操作,但我不确定是什么 - 而且我不确定自己要做什么。有人可以为我澄清上述内容吗?
感谢。
答案 0 :(得分:6)
根据文档System.currentTimeMillis()
返回UTC时间戳。换句话说,假设设备在获得时间戳之前已经与时间服务器同步(很可能),它将不包括时区调整。
http://developer.android.com/reference/java/lang/System.html#currentTimeMillis()
同样,如果您检索时间戳并使用Calendar
对象,则Calendar
如果您使用Locale
Calendar.setTimeInMillis(long milliseconds)
http://developer.android.com/reference/java/util/Calendar.html#Calendar()
http://developer.android.com/reference/java/util/Calendar.html#setTimeInMillis(long)
换句话说,你真的不需要“规范化”这些信息,Linux / Java会为你做这件事。您需要担心的是从已经进行Locale
调整的电子邮件,消息或其他系统获取时间戳,无论是否正确。这些是困难的时间戳问题。