Recipe Name:
Convert Joda-Time DateTimeFormat.shortDate()
Description:
Convert Joda-Time DateTimeFormat.shortDate()
Level:
warning
Language:
  • java
Tags:
  • framework specific
  • java.time
  • Joda-Time
  • quality
Documentation

Migrate from org.joda.time.DateTimeFormat to Java Time

Joda-Time DateTimeFormat and ISODateTimeFormat migrate to java.time DateTimeFormatter.

Joda-time and java.time use same concept for DateTimeFormatters

There are 4 predefined types of date, they are:

  • Full
  • Long
  • Medium
  • Short

For parsing, all 4 methods have equivalents in java.time.

Be aware if you are using the correct pattern for this formatter.

E.g. Using a datetime formatter to try parse date only.

Examples

Format

Before
    DateTimeFormatter joda = DateTimeFormat.fullDate();
    String jodaResult = joda.print(long);
After
    java.time.format.DateTimeFormatter javaFormatter = java.time.format.DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
    String javaResult = javaFormatter.format(ZonedDateTime.ofInstant(Instant.ofEpochMilli(long), ZoneId.systemDefault()));

Parse

Before
    DateTimeFormatter jodaDtf = DateTimeFormat.fullDate();
    long jodaResult = jodaDtf.parseMillis(expectedString);
After
    java.time.format.DateTimeFormatter javaDtf = java.time.format.DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
    long javaResult =  java.time.LocalDate.parse(expectedString, javaDtf).atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli();
References
Recipe
id: scw:java.time:Joda-Time:datetime-format-shortDate
version: 10
metadata:
  name: Convert Joda-Time DateTimeFormat.shortDate()
  shortDescription: Convert Joda-Time DateTimeFormat.shortDate()
  level: warning
  language: java
  enabled: true
  comment: Searches for org.joda.time.format.DateTimeFormat.shortDate method call and provides fixes to migrate to a java.time equivalent
  descriptionFile: descriptions/datetimeformat-date.html
  tags: framework specific;java.time;Joda-Time;quality
search:
  methodcall:
    name: shortDate
    type: org.joda.time.format.DateTimeFormat
availableFixes:
- name: Convert to java.time DateTimeFormatter
  actions:
  - rewrite:
      to: java.time.format.DateTimeFormatter.ofLocalizedDate(java.time.format.FormatStyle.SHORT)
  - modifyAssignedVariable:
      type: java.time.format.DateTimeFormatter