private static @Nullable ZonedDateTime parseDate(@NotNull String dateString) {
    try {
      int year = Integer.parseInt(dateString.substring(0, 4));
      // 0-based for old GregorianCalendar and 1-based for ZonedDateTime
      int month = Integer.parseInt(dateString.substring(4, 6));
      int dayOfMonth = Integer.parseInt(dateString.substring(6, 8));
      int hour;
      int minute;
      if (dateString.length() > 8) {
        hour = Integer.parseInt(dateString.substring(8, 10));
        minute = Integer.parseInt(dateString.substring(10, 12));
      }
      else {
        hour = 0;
        minute = 0;
      }
      return ZonedDateTime.of(year, month, dayOfMonth, hour, minute, 0, 0, ZoneOffset.UTC);
    }
    catch (Exception ignore) {
      return null;
    }
  }
private static @Nullable ZonedDateTime parseDate(@NotNull String dateString)