public static String formatTimestampString(
      String dateStr, String fromFormat, String toFormat, TimeZone tz) {
    SimpleDateFormat fromFormatter = FORMATTER_CACHE.get(fromFormat);
    fromFormatter.setTimeZone(tz);
    SimpleDateFormat toFormatter = FORMATTER_CACHE.get(toFormat);
    toFormatter.setTimeZone(tz);
    try {
      return toFormatter.format(fromFormatter.parse(dateStr));
    } catch (ParseException e) {
      LOG.error(
          "Exception when formatting: '"
              + dateStr
              + "' from: '"
              + fromFormat
              + "' to: '"
              + toFormat
              + "'",
          e);
      return null;
    }
  }
Parses a fraction, multiplying the first character by {@code multiplier}, the second character
by {@code multiplier / 10}, the third character by {@code multiplier / 100}, and so forth.

<p>For example, {@code parseFraction("1234", 100)} yields {@code 123}.
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/util/DateTimeUtils.java