UTC and GMT are recognized as the standard references for dealing with dates and times. Today, UTC is the preferred way to go, but UTC and GMT should return the same result in most cases.
In order to get all the time zones with UTC and GMT, the solution should focus on the implementation before and after JDK 8. So, let's start with the solution that was useful before JDK 8.