我有一个Android应用程序,可以使用GPS模块和SQLite数据库。在开始时,一切都听起来很不错,但是当我需要使用Date()和时区时,恐怖就会出现。Android Date Date Timezones驱动我坚果
一点背景
GPS模块有可能从卫星获取日期。这是一件好事,我需要在我的应用程序中确保有效的数据。从它返回的日期是GMT时间。 此日期作为StartTime插入到本地数据库的一个字段中。 StartTime以AES加密存储。当我解密StartTime时,我需要将它转换为Date并将格式保留为GMT。
我做什么 获取LocationListener的从GPS数据:具有默认的GPS日期转换在设备的当前时区新的Date()
gpsDate = new Date(location.getTime());
。因此,我没有一个不错的Sun Dec 05 14:00:00 GMT 2010 time,我得到Sun Dec 05 16:00:00 GMT + 2 2010。它为什么这样做?我只是想从getTime()中取出一个新日期。
我插入数据在数据库:
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
outputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String date = outputFormat.format(gpsDate);
我检索日期,当我需要它:
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
outputFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String myStored = {decrypy from the database}
Date myStartDate = outputFormat.parse(myStoredDate);
myStored显示:2010-12-05 14:00
myStartDate显示:Sun Dec 05 16:00:00 GMT + 2 2010
这里有一些我很想念的东西。我需要能够以格式获取日期,插入,转换,比较,计算差异。只有当我需要显示给他时,我需要用户时区中的日期。
请照亮我。
为什么你需要一个DATE对象,如果你只是想把它放在数据库中。只要把你从location.getTime() – Falmarri 2010-12-05 20:28:17
得到的时间,这是一个很好的点...我会尝试看看它是如何工作的。 – Alin 2010-12-05 20:52:45