- java
- java.time
- framework specific
- Joda-Time
- quality
Migrate from org.joda.time.DateTimeZone to Java Time
Joda-Time DateTimeZone migrates to java.time ZoneId or ZoneOffset.
ZoneId is the same concept, an identifier of a time-zone.
ZoneOffset is a new concept, an offset from UTC.
Beforeorg.joda.time.DateTimeZone forID = DateTimeZone.forID(zoneId); org.joda.time.DateTimeZone forOffsetHours = DateTimeZone.forOffsetHours(offsetHours);After
ZoneId forID = ZoneId.of(zoneId); ZoneOffset forOffsetHours = ZoneOffset.ofHours(offsetHours);
Note: the recipes for getName and getShortName do not map exactly to the ZoneId.getName method, this is deliberate. The Joda-Time getName and getShortName methods will return different names depending on whether the long argument(which represents an instant in time) is in daylight savings time or not. In java.time, the ZoneId getName method does not respect daylight savings time changes. In order to follow this original behaviour, we need to create a ZonedDateTime and format it using a DateTimeFormatter, this is what the recipes have been designed to do.
Referencesid: scw:java.time:Joda-Time:datetimezone-toTimeZone version: 10 metadata: name: Convert toTimeZone to TimeZone.getTimeZone(ZoneId) shortDescription: Convert toTimeZone to TimeZone.getTimeZone(ZoneId) level: warning language: java enabled: true comment: |- This recipe is designed to match on broken code, the method that is being searched for does not actually exist on the type. After migrating an org.joda.time.DateTimeZone instance to a java.time.ZoneId, subsequent calls may be made to methods that existed for DateTimeZone, but no longer exist for ZoneId. This recipe matches on the methodname that no longer exists, and suggests an equivalent rewrite that will work for java.time. descriptionFile: descriptions/datetimezone.html tags: java.time;framework specific;Joda-Time;quality search: methodcall: name: toTimeZone type: java.time.ZoneId availableFixes: - name: Rewrite as TimeZone.getTimeZone(ZoneId) actions: - rewrite: to: java.util.TimeZone.getTimeZone({{{ qualifier }}})