/** * Parses a region id, such as 'Europe/London'. * * @param string $text * @param DateTimeParser|null $parser * * @return TimeZoneRegion * * @throws DateTimeParseException */ public static function parse($text, DateTimeParser $parser = null) { if (!$parser) { $parser = IsoParsers::timeZoneRegion(); } return TimeZoneRegion::from($parser->parse($text)); }
/** * Obtains an instance of `ZonedDateTime` from a set of date-time fields. * * This method is only useful to parsers. * * @param DateTimeParseResult $result * * @return ZonedDateTime * * @throws DateTimeException If the zoned date-time is not valid. * @throws DateTimeParseException If required fields are missing from the result. */ public static function from(DateTimeParseResult $result) { $localDateTime = LocalDateTime::from($result); $timeZoneOffset = TimeZoneOffset::from($result); if ($result->hasField(Field\TimeZoneRegion::NAME)) { $timeZone = TimeZoneRegion::from($result); } else { $timeZone = $timeZoneOffset; } return ZonedDateTime::of($localDateTime, $timeZone, $timeZoneOffset); }