当前位置: 首页 > 知识库问答 >
问题:

在Java8时间中设置时区偏移量与joda时间的对比

田英卓
2023-03-14

我在两个地方为一个组织工作。其中之一是智利,那里的夏令时极难预测,往往每年都有变化。我们有一个依赖于时间的应用程序,直到现在,一直在使用joda time。当智利政府决定更改夏令时,我们使用joda代码将偏移量设置为默认的DateTimeZone:

/**
 * Updates the default time zone, i.e. the time zone which is used as local time.
 */
 private void updateDefaultTimeZone() {
    if (isEmpty(Configuration.Value.TIME_ZONE_OFFSET)) {
        // make the site's default time zone the current time zone for joda time,
        // this should always be the case for the non-Chile site, and work for the Chile site during most of the year
        DateTimeZone.setDefault(siteService.getSiteTimeZone());
    } else {
        // makes a user defined time zone the current time zone for joda time
        // this will be used when Chile is delaying or pulling forward the transition from/to daylight
        // saving time and the JVM is therefore not able to calculate the local times appropriately
        Integer offset = getInteger(Configuration.Value.TIME_ZONE_OFFSET);
        DateTimeZone.setDefault(DateTimeZone.forOffsetHours(offset));
    }
}

另外,在Java8Time中转换单元的最佳方法是什么?假设我有24小时,我想把它换算成几天。(我这样问是因为在这种情况下,似乎很多方法都是以毫秒为单位工作的,而我想要以小时为单位工作,但我认为必须有一种更好的内置转换方法,而不是手工进行运算。)

共有1个答案

公西承
2023-03-14

使用java.util.TimeZone.setDefault(TimeZone)。因为JSR-310java.time.*与JDK集成在一起,所以不需要单独的方法。

(要转换单位,您可能会发现使用timeunit是最简单的方法,但可能另一个更有针对性的问题会对您有所帮助。)

 类似资料:
  • Joda Time的时区ID可以简单地用以下代码段显示。 但是,如何显示相应的时区偏移量、时区ID和长名称,使列表看起来如下所示?

  • 问题内容: 日期格式:“ yyyy-MM-dd’T’HH:mm:ss.SSSZ ” 输入日期:“ 2017-09-18T03:08:20.888 + 0200 ” 问题:我需要从输入的字符串中检索时区偏移量,并在该时区中打印已解析的日期。换句话说,我需要输出与输入相同。 成功解析输入日期并返回对象。众所周知,Date没有时区字段。将解析的日期转换为其时区,默认情况下为系统时区。当我打印此日期时,它

  • 问题内容: 使用javascript,我知道我的用户时区为UTC +3。 现在,我想用此知识创建DateTime对象: 我得到的回应是: 我究竟做错了什么?我该如何解决? 问题答案: 这个怎么样…

  • 问题内容: 我希望服务器始终以HTML中的UTC形式提供日期,并让客户端站点上的JavaScript将其转换为用户的本地时区。 如果我能以用户的区域设置日期格式输出,则为奖励。 问题答案: 以UTC日期开头的最简单的方法似乎是创建一个新对象,并使用这些方法将其设置为所需的日期/时间。 然后,各种方法将提供本地化输出。 例:

  • 问题内容: 给定任意时间偏移,如何创建一个代表该时间偏移的可用对象? 以下代码使用偏移量解析时间,但随后不返回任何信息: 游乐场:https : //play.golang.org/p/j_E28qJ8Vgy 基本上,我有一些带有时间偏移量的时间数据,但是没有位置数据,我想创建一个对象以确保记录GMT偏移量。然后能够输出相对于最终用户实际位置的时间偏移量。 问题答案: 用: 然后设置到此位置: 试

  • 我正在尝试使用Joda在一个简单的Java程序中获取UTC时间戳: 程序输出如下: 毫秒值是正确的UTC时间(即用时区确认)第二个值是时区。 我需要的是UTC值不变为(即独立于TZ),用于数据库写入。这可能吗? 我知道是本地日期(GMT-4),是UTC(GMT-0)。日期的输出值如下: 我尝试了所有组合,试图将的UTC值作为java.sql.TimeStamp: 用于测试的打印输出: 第一行是正确