Time
Definitions
Standard Time
Standard time is the synchronization of clocks within a time zone to a single time standard, rather than using solar time or local mean time standard. All clocks within the same timezone show the same time.
The standard time set in each time zone is defined in terms of offsets from UTC and, in those time zones where daylight saving time is observed, by applying an additional offset corresponding to the daylight saving.
More details: https://en.wikipedia.org/wiki/Standard_time
UTC
UTC (Coordinated Universal Time or Universal Time) is the primary time standard by which the world regulates time. UTC represents a moment in time within about 1 second of mean solar time at 0° longitude. UTC does not observe daylight savings time. It is a successor to GMT (Greenwich Mean Time). For most practical purposes, UTC is considered interchangeable with GMT, but GMT is no longer precisely defined by the scientific community.
Time zones around the world are expressed using positive or negative offsets from UTC.
More details: https://en.wikipedia.org/wiki/Universal_Time
GMT
See UTC
Timezone
Daylight Saving Time
How Do Applications Get the Local Timezone?
Applications obtain the current timezone from the system via the localtime API (for more details see man localtime). The timezone information used by localtime and exposed to the API clients is initialized based on the value of the TZ environment variable, as it follows (this applies to Mac/BSD, update it for other platforms):
- If TZ does not appear in the environment, the best available approximation to local wall clock time is read from /etc/localtime.
- If TZ appears in the environment but its value is a null string, Coordinated Universal Time (UTC) is used.
- If TZ appears in the environment and its value begins with a colon (`:'), the rest of its value is used as a pathname of a tzfile-format file from which to read the time conversion information. If the first character of the pathname is a slash (`/'), it is used as an absolute pathname; otherwise, it is used as a pathname relative to the system time conversion information directory.
- If TZ appears in the environment and its value does not begin with a colon, it is first used as the pathname of a file, as described above, from which to read the time conversion information. Conventionally, the files are available under /usr/share/zoneinfo and the file name designates the corresponding timezone. If that file cannot be read, the value is then interpreted as a direct specification of the time conversion information.
- If the TZ environment variable does not specify a tzfile-format file and cannot be interpreted as a direct specification, UTC is used.
Example
Setting TZ to:
export TZ=/usr/share/zoneinfo/Pacific/Honolulu
causes date to output this:
Tue Jul 12 14:32:47 HST 2016
Java Timezone Support
UTC
UTC is specified as "0000" in RFC 822
15/01/01 01:01:01+0000
and as "Z" in ISO 8601
15/01/01 01:01:01 Z