【发布时间】:2023-03-05 18:11:01
【问题描述】:
我想将具有当前时间和日期的字符串存储到 Android 应用程序的数据库 (SQLite) 中。为此,我正在使用 SimpleDateFormat。不幸的是,它没有显示正确的时间。我尝试了两种选择。
第一个选项(来自SimpleDateFormat with TimeZone)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z", Locale.getDefault());
sdf.format(new Date());
第二个选项(来自Java SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") gives timezone as IST)
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss'Z'");
sdf2.setTimeZone(TimeZone.getTimeZone("CEST"));
在这两种情况下,时间都是错误的。我的笔记本电脑或手机显示的不是当地时间,但输出时间提前了 2 小时。我该如何改变呢?我想在我的电脑上显示柏林的当前时间(CEST)。我感谢每一条评论。
【问题讨论】:
-
为什么不将当前时间存储为 unix 时间戳?然后在需要时将 ms 转换为日期字符串。节省一些字节,并且可以轻松转换到任何其他时区。
-
存储
System.currentTimeMillis();解析为String。将它与Calendar一起使用以再次将其显示为文本。如果您想知道如何执行此操作,请发表评论...我会发布答案。 -
感谢 Viatcheslav 和 Vishnu 的 cmets。我已经在数据库中有一个条目,当前时间以毫秒为单位。这应该是第二个条目。第一个条目(以毫秒为单位)用于查询两个时间点之间的条目。作为人类不“可读”的毫秒条目,我还希望在数据库中有第二个可读条目
-
@VanessaF 我现在将发布一个答案,以使 MilliSeconds 的 人类可读 时间..
-
顺便考虑扔掉早已过时且臭名昭著的麻烦
SimpleDateFormat和朋友。看看您是否可以使用 desugaring 或将 ThreeTenABP 添加到您的 Android 项目中,以便使用现代 Java 日期和时间 API java.time。使用起来感觉好多了。
标签: java android simpledateformat