Apex provides a TimeZone API. You can use this to query the detail of a time zone, named using its "SID" (a value like "Europe/London" or "America/New_York" for example). However, this API doesn't provide a means to query the SIDs for the supported time zones.
How can I determine the valid set of supported time zones by SID?