code: public static DateTimeFormatter ofLocalizedDateTime(FormatStyle dateStyle, FormatStyle timeStyle) {
          Objects.requireNonNull(dateStyle, "dateStyle");
          Objects.requireNonNull(timeStyle, "timeStyle");
          return new DateTimeFormatterBuilder().appendLocalized(dateStyle, timeStyle)
                  .toFormatter(ResolverStyle.SMART, IsoChronology.INSTANCE);
      }
docs: Returns a locale specific date and time format for the ISO chronology.
  <p>
  This returns a formatter that will format or parse a date-time.
  The exact format pattern used varies by locale.
  <p>
  The locale is determined from the formatter. The formatter returned directly by
  this method will use the {@link Locale#getDefault() default FORMAT locale}.
  The locale can be controlled using {@link DateTimeFormatter#withLocale(Locale) withLocale(Locale)}
  on the result of this method.
  <p>
  Note that the localized pattern is looked up lazily.
  This {@code DateTimeFormatter} holds the style required and the locale,
  looking up the pattern required on demand.
  <p>
  The returned formatter has a chronology of ISO set to ensure dates in
  other calendar systems are correctly converted.
  It has no override zone and uses the {@link ResolverStyle#SMART SMART} resolver style.
  
  @param dateStyle  the date formatter style to obtain, not null
  @param timeStyle  the time formatter style to obtain, not null
  @return the date, time or date-time formatter, not null