- java
- framework specific
- java.time
- 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:Convert_DateTimeZone_to_ZoneId version: 10 metadata: name: Convert DateTimeZone to ZoneId shortDescription: Convert DateTimeZone to ZoneId level: warning language: java enabled: true comment: |- This recipe searches for a static factory method of DateTimeZone and provides a fix to rewrite it to the java.time.ZoneId equivalent. If the return value is used as a variable assignment, the recipe will modify the type to java.time.ZoneID. This may introduce further problem markers in your IDE, as you variable may reference DateTimeZone methods that do not exist on java.time.ZoneId. Further sensei recipes are available to help migrate these invalid method names to java.time equivalents. descriptionFile: descriptions/datetimezone.html tags: framework specific;java.time;Joda-Time;quality search: methodcall: args: 1: type: java.lang.String name: forID type: org.joda.time.DateTimeZone availableFixes: - name: Convert DateTimeZone to ZoneId actions: - modifyAssignedVariable: type: java.time.ZoneId - rewrite: to: java.time.ZoneId.of({{{ arguments }}}) - name: Convert DateTimeZone to ZoneOffset actions: - modifyAssignedVariable: type: java.time.ZoneOffset - rewrite: to: java.time.ZoneOffset.of({{{ arguments }}})