Man Tzset can clearly understand the time zone format, a total of 3 kinds:
The first format is used when there are no daylight saving time in the local timezone:
STD Offset
The second format is used if there is daylight saving time:
STD offset DST [Offset],start[/time],end[/time]
The third format specifies that the timezone information should is read from a file:
: [Filespec]
The first two formats are commonly used.
The STD string specifies the name of the timezone and must be three or more alphabetic characters.
The offset string immediately follows STD and specifies the time value to being added to the local time to get C oordinated Universal Time (UTC).
The offset is positive if the local timezone are west of the Prime Meridian and negative if it is east. The hour must be between 0 and, and the Minutes and seconds 0 and 59.
STD offset has no time zone format for daylight saving time, that is, a name plus the time difference from UTC, that is, local times are given UTC times. If the time difference is positive, the timezone is in the west of the Prime Meridian (west), and if it is negative, the time zone is in the east of the Prime Meridian (east), see Bold part of the font. So CST6CDT is the time zone name for the West zone. --Because the West zone plus 6 hours, it is UTC time. and CST-8 is East Eight, because the East eight area minus 8 hours is just UTC time .
Time zones in POSIX format description: http://www.ibm.com/developerworks/aix/library/au-aix-posix/index.html
GNU Introduction to TZ variables: http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
World Time Zone Introduction, shorthand, etc.: http://www.timeanddate.com/time/zones/
Reference:
Some understandings of the time zone under Linux
Linux TZ format