[
https://issues.apache.org/jira/browse/LANG-1786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18035944#comment-18035944
]
Gary D. Gregory edited comment on LANG-1786 at 11/6/25 6:14 PM:
----------------------------------------------------------------
Here's another idea for your consideration in TimeZones PR #1492: replace
TimeZones.getTimeZone(String) with an auto-map feature:
{code:java}
public static TimeZone getTimeZone(final String id) {
return AT_LEAST_JAVA_25 && ZoneId.SHORT_IDS.containsKey(id) ?
TimeZone.getTimeZone(ZoneId.SHORT_IDS.get(id)) : TimeZone.getTimeZone(id);
}
{code}
or just:
{code:java}
public static TimeZone getTimeZone(final String id) {
final String mapped = ZoneId.SHORT_IDS.get(id);
return TimeZone.getTimeZone(mapped != null ? mapped : id);
}
{code}
was (Author: garydgregory):
Here's another idea for your consideration in TimeZones PR #1492: replace
TimeZones.getTimeZone(String) with an auto-map feature:
{code:java}
public static TimeZone getTimeZone(final String id) {
return AT_LEAST_JAVA_25 && ZoneId.SHORT_IDS.containsKey(id) ?
TimeZone.getTimeZone(ZoneId.SHORT_IDS.get(id)) : TimeZone.getTimeZone(id);
}
{code}
or just:
{code:java}
public static TimeZone getTimeZone(final String id) {
final String mapped = ZoneId.SHORT_IDS.get(id);
return mapped != null ? TimeZone.getTimeZone(mapped) :
TimeZone.getTimeZone(id);
}
{code}
> FastDateFormat logs warnings on the console using FastDateFormat on Java 25
> ---------------------------------------------------------------------------
>
> Key: LANG-1786
> URL: https://issues.apache.org/jira/browse/LANG-1786
> Project: Commons Lang
> Issue Type: Improvement
> Components: lang.time.*
> Affects Versions: 3.19.0
> Reporter: Daniel Migowski
> Priority: Major
> Fix For: Patch Needed
>
>
> When using an instance of FastDateFormat with e.g.
> {code:java}
> FastDateFormat.getInstance( "yyyy-MM-dd'T'HH:mm:ssZ" );{code}
> the timezone database of the commons.lang package iterates throught all
> timezones and adds them to the local database. This sadly calls
> {code:java}
> java.util.TimeZone.getTimeZone(String){code}
> with a bunch of timezone strings that are considered deprecated with the new
> JDK25 (or something between 18 and 25, didn't check that), and each of these
> timezone strings leads to a message like
> {noformat}
> WARNING: Use of the three-letter time zone ID "ACT" is deprecated and it will
> be removed in a future release{noformat}
> printed directly from the getTimeZone function to system.err!
> This is actually really annoying. The timezone strings which are deprecated
> can be found in
> {code:java}
> java.time.ZoneId.SHORT_IDS.{code}
> My suggestion is to check in
> {code:java}
> org.apache.commons.lang3.time.FastDateParser.TimeZoneStrategy.TimeZoneStrategy{code}
> if the JDK version 25 is running and then to filter the values from SHORT_IDS
> to be recognized. SHORT_IDS should be copied into commons.lang to make this
> still work with older JDKs.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)