将 GMT 转换为 CET 时区 android

时间:2021-05-27 10:59:21

标签: android kotlin timestamp timezone

我有一个来自服务器的 GMT 时间戳,如下所示:
2021-05-27T07:46:31+00:00
我需要将其转换为 CET / 比利时时间戳。 CET 将比 GMT 提前 2 小时。如何在 Android 中转换它?

1 个答案:

答案 0 :(得分:1)

您的输入带有与 UTC 的偏移量,但不带有时区。时区是特定地区人民过去、现在和未来使用的偏移量变化的历史记录。

实时时区的名称格式为 Continent/Region。切勿使用 2-4 个字符的伪区域,例如 CETCSTIST,因为它们不是实时区域,不是标准化的,甚至不是唯一的。

OffsetDateTime odt = OffsetDateTime.parse( "2021-05-27T07:46:31+00:00" ) ;
ZoneId z = ZoneId.of( "Europe/Brussels" ) ;
ZonedDateTime zdt = odt.atZoneSameInstant( z ) ;

关于java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.DateCalendarSimpleDateFormat

要了解更多信息,请参阅 Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为 JSR 310

现在位于 Joda-Timemaintenance mode 项目建议迁移到 java.time 类。

您可以直接与您的数据库交换 java.time 对象。使用符合 JDBC driver 或更高版本的 JDBC 4.2。不需要字符串,不需要 java.sql.* 类。 Hibernate 5 和 JPA 2.2 支持 java.time

从哪里获取 java.time 类?

Table of which java.time library to use with which version of Java or Android