gpt4 book ai didi

Java:getTimeZone 不返回默认值

转载 作者:行者123 更新时间:2023-11-29 07:37:58 27 4
gpt4 key购买 nike

我有以下指令:

TimeZone zone = TimeZone.getTimeZone("Asia/Toyo");

显然,它应该返回 null,但它会返回默认的时区,这不是我的情况所需的行为。来自 Java 文档:

Returns the specified TimeZone, or the GMT zone if the given ID cannot be understood.

如果字符串未指示有效时区,是否有方法获取相应的时区和空值?

我没有找到一个好的解决方案来获取所有时区并迭代它们。

最佳答案

java.time.ZoneId

旧的日期时间类现在是遗留的,被 java.time 类所取代。

您应该使用 ZoneId 而不是 java.util.TimeZone .用于解析 proper time zone name , 调用 ZoneId.of .

ZoneId.of ( "Africa/Casablanca" ) 

ZoneRulesException 的陷阱

如果您传入的名称无法识别,该方法将抛出一个 ZoneRulesException .

因此,要捕捉 Asia/Tokyo 的拼写错误作为 Asia/ToyoZoneRulesException 的陷阱.

ZoneId z;
try {
z = ZoneId.of ( "Asia/Toyo" ); // Misspell "Asia/Tokyo" as "Asia/Toyo".
} catch ( ZoneRulesException e ) {
System.out.println ( "Oops! Failed to recognize your time zone name. ZoneRulesException message: " + e.getMessage () );
return;
}
ZonedDateTime zdt = ZonedDateTime.now ( z );

查看此 code run live at IdeOne.com .


关于java.time

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

Joda-Time项目,现在在maintenance mode , 建议迁移到 java.time类。

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

从哪里获得 java.time 类?

ThreeTen-Extra项目用附加类扩展 java.time。该项目是 future 可能添加到 java.time 的试验场。您可能会在这里找到一些有用的类,例如 Interval , YearWeek , YearQuarter , 和 more .

关于Java:getTimeZone 不返回默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33373442/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com