If region is austrilia output is "GMT-6". If region is Canada output is "CST"
This is quite reasonable. If you search for "CST" in this list, you will find that it is an abbreviation for quite a lot of timezones.
Specifically, CST stands for both Central Standard Time in America and Central Standard Time in Australia (the latter can also be abbreviated as ACST).
If the system region is Australia, then abbreviation
outputting "CST" for America/Chicago
would be rather confusing. An Australian would see "CST" and go "Ah that's Australian Central Standard Time" (at least that's what iOS thinks). Clearly not what you mean. Therefore, it resorts to the more accurate but less meaningful "UTC-6".
Another example is that the same timezone is called differently depending on the language. If the phone's region is in Canada, America/Toronto
, for example, would have different abbreviations depending on the phone's language. In English, it is EST at the time of writing - Eastern Standard Time. In French (Canada), it is Heure Normale de l'Est (HNE). See other timezone abbreviations and names in French.
The output of abbreviation(for:)
is meant to be human readable, not so much machine-readable. It tries to produce an abbreviation that is understandable to people living in the system region, speaking the system language. For the most part, it is a black box. Don't think too much about it.