code: @FromString
      public static DateTimeZone forID(String id) {
          if (id == null) {
              return getDefault();
          }
          if (id.equals("UTC")) {
              return DateTimeZone.UTC;
          }
          DateTimeZone zone = getProvider().getZone(id);
          if (zone != null) {
              return zone;
          }
          if (id.startsWith("+") || id.startsWith("-")) {
              int offset = parseOffset(id);
              if (offset == 0L) {
                  return DateTimeZone.UTC;
              } else {
                  id = printOffset(offset);
                  return fixedOffsetZone(id, offset);
              }
          }
          throw new IllegalArgumentException("The datetime zone id '" + id + "' is not recognised");
      }
docs: Gets a time zone instance for the specified time zone id.
  <p>
  The time zone id may be one of those returned by getAvailableIDs.
  Short ids, as accepted by {@link java.util.TimeZone}, are not accepted.
  All IDs must be specified in the long format.
  The exception is UTC, which is an acceptable id.
  <p>
  Alternatively a locale independent, fixed offset, datetime zone can
  be specified. The form <code>[+-]hh:mm</code> can be used.
  
  @param id  the ID of the datetime zone, null means default
  @return the DateTimeZone object for the ID
  @throws IllegalArgumentException if the ID is not recognised