New in Symfony 4.3: Timezone improvements

Symfony 4.3 will add a new Timezone validator to check that the given value
is a valid timezone ID as defined by PHP. In addition to that validator, we've
worked hard on many other features to improve the support of timezones.

The TimezoneType form element supports both strings and PHP timezones in its
input option (which defines the format the timezone is stored on your
underlying object). In Symfony 4.3 this option supports a new value called
intltimezone to use \IntlTimeZone objects to store timezones.

The Timezone validator added in Symfony 4.3 has been improved to also
consider valid the ICU timezones, not only the PHP timezones. Besides, the list
of ICU timezones has been updated to its 64.2 version. The only difference is
that expired timezones cannot be used with IntlTimeZone.

In practice, this considers valid both UTC (the PHP format) and Etc/UTC
(the ICU format), whereas Etc/UTC was considered wrong before (which is not).

This long-requested feature will finally make it in Symfony 4.3: the list of
timezone names displayed by TimezoneType can be translated. Thanks to the new
choice_translation_locale option, you can set the locale used to translate
the timezone names before displaying them to the user:

In the example above, the timezones will be displayed in Ukrainian (locale =
uk) instead of the default English, so the user will see things like
за центральноєвропейським часом (Амстердам) instead of
Central European Time (Amsterdam).

Timezones::getRawOffset() is just wrong. You cannot get time zone offset without asking when do you want to know the offset. Many time zones change their offset during the year. Moreover, sometimes a time zone offset changes significantly, e.g. from -12 to +12 (or something like that). See https://www.youtube.com/watch?v=-5wpm-gesOY