【问题标题】:How to set java timezone?如何设置java时区?
【发布时间】:2011-10-24 23:12:16
【问题描述】:

我的系统时间与 java 的 new Date() 告诉的不同(+ 4 小时),
所以我认为这是因为一些 java 设置。
如何让 java 时间始终作为我的 linux 系统时间?
(通过编辑一些配置文件)

【问题讨论】:

标签: java linux time timezone


【解决方案1】:

您可以在应用程序启动时使用TimeZone.setDefault(..),或将时区作为命令行参数传递:-Duser.timezone=GMT

【讨论】:

    【解决方案2】:

    如果您想以编程方式更改时区,则可以使用:

    TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
    

    我更喜欢这种方法,因为它不需要人们记住使用正确的时区参数运行我的代码。

    【讨论】:

      【解决方案3】:

      这段代码帮助了我。

      TimeZone tzone = TimeZone.getTimeZone("Singapore");
      // set time zone to default
      tzone.setDefault(tzone);
      

      【讨论】:

        【解决方案4】:
        Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
        Date myDate = calendar.getTime();
        System.out.println(myDate);
        

        此代码是否打印了正确的日期/时间?否则,还有其他问题。

        【讨论】:

        【解决方案5】:

        避免需要

        使您的日期和时间代码独立于 JVM 的时区设置。该设置无论如何都不可靠,因此无论如何不使用它是最好的。

        对于一个时区。

        ZoneId z = ZoneId.of( "Asia/Japan" ) ;        // Or use `ZoneId.systemDefault()` for the JVM’s current default time zone. The JVM’s default may or may not match that of the host OS’ current default time zone.
        ZonedDateTime zdt = ZonedDateTime.now( z ) ;  // Capture the current moment as seen in a particular time zone.
        

        对于 UTC(零偏移)。

        OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;
        

        是的,我知道打印老式的java.util.Date 并因此隐式调用其toString 方法会导致它使用时区设置来呈现要打印的字符串。不过,您不应再使用 Date 类。它设计得很糟糕。使用 JVM 时区并因此假装 Date 拥有时区的令人困惑的特征只是其许多不好的方面之一。使用现代 Java 日期和时间 API java.time 进行日期和时间工作。

        如果你无法避免需要

        在 Unix 中将环境变量 TZ 设置为所需的时区 ID。例如,这在我的 Mac 上对我有用:

        export TZ=Etc/UTC
        java -cp /Your/class/path your.package.YourMainClass
        

        链接

        Oracle tutorial: Date Time 解释如何使用 java.time。

        【讨论】:

          【解决方案6】:

          使用System.getCurrentTimeInMillis();

          然后获取日历实例并设置您的时间..

          【讨论】:

            猜你喜欢
            • 2021-04-11
            • 2021-01-08
            • 2010-10-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-06
            • 2011-02-22
            • 2017-07-10
            相关资源
            最近更新 更多