我正在使用System.currentTimeMillis();获取我的'修改'数据库字段的当前时间。我将它除以1000将其转换为unix时代。 但是,即使手机/模拟器的日期和时间设置为真实时间,数据库中存储的值也比实际时间早2小时。
我在GMT + 2,但我找不到这是如何影响的。
不是System.currentTimeMillis();获取当前时间设置的当前时间?
答案 0 :(得分:2)
currentTimeMillis
不返回与时区相关的时间戳:
当前时间与1970年1月1日午夜之间的差异(以毫秒为单位) UTC 。
但是,最好以UTC格式存储时间戳,并且不包括时区偏移量。要显示“正确”时间,您可以使用SimpleDateFormat
:
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
// set your Timezone; or use TimeZone.getDefault() for the device timezone
df.setTimeZone(TimeZone.getTimeZone("Europe/Paris"));
String time = df.format(new Date(timestamp));
答案 1 :(得分:2)
使用Calendar.getInstance()代替,如下所示:
Calendar curTime = Calendar.getInstance();
此curTime
对象将是特定于语言环境的。
从API,关于currentTimeMillis()
此方法不应用于测量超时或其他经过时间的测量,因为更改系统时间会影响结果。
答案 2 :(得分:0)