如何设置java时区?

发布于 2024-11-29 05:25:26 字数 119 浏览 1 评论 0原文

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

My system time differs from what java's new Date() tells (+ 4 hours),
so I think it's because some java settings.
How can I make java time to be always as my linux system time?
(by editing some configuration file)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

何时共饮酒 2024-12-06 05:25:26

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

You can use TimeZone.setDefault(..) when your application starts, or pass the timezone as command-line argument: -Duser.timezone=GMT

So尛奶瓶 2024-12-06 05:25:26

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

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

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

If you want to change the time zone programmatically then you can use:

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

I prefer this method because it doesn't rely on people remembering to run my code with the correct time zone arguments.

踏月而来 2024-12-06 05:25:26

这段代码对我有帮助。

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

This code helped me.

TimeZone tzone = TimeZone.getTimeZone("Singapore");
// set time zone to default
tzone.setDefault(tzone);
故事还在继续 2024-12-06 05:25:26
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
Date myDate = calendar.getTime();
System.out.println(myDate);

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

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
Date myDate = calendar.getTime();
System.out.println(myDate);

Is this code printing the right date/time? Else, there's some other problem.

亣腦蒛氧 2024-12-06 05:25:26

避免需要

使日期和时间代码独立于 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.time(现代 Java 日期和时间 API)进行日期和时间工作。

如果无法避免需要

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

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

链接

Oracle 教程:日期时间 解释如何使用java.time。

Avoid the need

Make your date and time code independent of the JVM’s time zone setting. The setting is unreliable anyway, so not using it will be for the best regardless.

For a time zone.

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.

For UTC (an offset of zero).

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

Yes, I know that printing an old-fashioned java.util.Date and thereby implicitly invoking its toString method causes it to use the time zone setting for rendering the string to be printed. You should no longer use the Date class, though. It’s poorly designed. The confusing trait of using the JVM time zone and thus pretending that a Date holds a time zone is just one of its many bad sides. Use java.time, the modern Java date and time API, for your date and time work.

If you can’t avoid the need

Set the environment variable TZ in Unix to the desired time zone ID. For example this worked for me on my Mac:

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

Link

Oracle tutorial: Date Time explaining how to use java.time.

世界和平 2024-12-06 05:25:26

使用 System.getCurrentTimeInMillis(); ,

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

use System.getCurrentTimeInMillis();

and then take a calendar instance and set Your time..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文