在后端,我正在使用Springboot。
我希望能够将服务器时间设置为EST,这样当我执行以下操作时:
Date()
该时间是美国东部时间。有可能吗?
答案 0 :(得分:2)
TL; DR:不,那不可能。
消息:
Date
时,该课程无法设置时区,这显然会阻止您提出要求。 将ZonedDateTime
用于带有时区的日期和时间
ZoneId eastern = ZoneId.of("Australia/Victoria");
ZonedDateTime now = ZonedDateTime.now(eastern);
System.out.println(now);
刚刚运行时的输出:
2020-07-08T02:54:50.528310 + 10:00 [澳大利亚/维多利亚]
这是澳大利亚东部标准时间,简称AEST或EST。但是,如果您在10月4日之后运行代码,则将获得澳大利亚东部夏令时间(AEDT,EDT或EDST)。
如果您打算使用北美东部标准时间,则可以尝试America/Toronto
或America/New_York
。他们会在11月1日之后为您提供美国东部夏令时间(EST)。
不过,有些时区会全年为您提供东部标准时间,例如澳大利亚的Australia/Brisbane
和北美的America/Cancun
。
ZonedDateTime
是现代Java日期和时间API java.time的一部分。我建议您始终使用java.time,而不要使用设计欠佳且过时的Date
类。
链接
答案 1 :(得分:0)
您不能从Java更改服务器计算机的时区。如果要在服务器级别上执行此操作,则可能需要查询服务器设置;请参阅第11页的『设置服务器设置』。但是,如果要在应用程序级别解决此问题,则可以在Spring Context
中注册具有格式的Date对象的bean,然后将其注入到任意位置。
请注意,如果它是java.util.Date
,则应使用DateFormat
实例并在其中设置所需的时区。然后,在Date实例中使用该对象。 Date类本身不包含任何时区信息,因此您不能在Date对象上设置时区。