PosixTimeZone

Represents a time zone from a TZ Database time zone file. Files from the TZ Database are how Posix systems hold their time zone information. Unfortunately, Windows does not use the TZ Database. To use the TZ Database, use PosixTimeZone (which reads its information from the TZ Database files on disk) on Windows by providing the TZ Database files and telling PosixTimeZone.getTimeZone where the directory holding them is.

To get a PosixTimeZone, call PosixTimeZone.getTimeZone (which allows specifying the location the time zone files).

Note: Unless your system's local time zone deals with leap seconds (which is highly unlikely), then the only way to get a time zone which takes leap seconds into account is to use PosixTimeZone with a time zone whose name starts with "right/". Those time zone files do include leap seconds, and PosixTimeZone will take them into account (though posix systems which use a "right/" time zone as their local time zone will not take leap seconds into account even though they're in the file).

final
class PosixTimeZone : TimeZone {
version(!StdDdoc && TZDatabaseDir)
enum defaultTZDatabaseDir;
version(!StdDdoc && !TZDatabaseDir && Android)
enum defaultTZDatabaseDir;
version(!StdDdoc && !TZDatabaseDir && !Android && Solaris)
enum defaultTZDatabaseDir;
version(!StdDdoc && !TZDatabaseDir && !Android && !Solaris && Posix)
enum defaultTZDatabaseDir;
version(!StdDdoc && !TZDatabaseDir && !Android && !Solaris && !Posix && Windows)
enum defaultTZDatabaseDir;
}

Members

Functions

dstInEffect
bool dstInEffect(long stdTime)

Takes the number of hnsecs (100 ns) since midnight, January 1st, 1 A.D. in UTC time (i.e. std time) and returns whether DST is in effect in this time zone at the given point in time.

strip (from std.string)
auto strip(Range str, const(Char)[] leftChars, const(Char)[] rightChars) via public import std.string : strip;

Strips both leading and trailing whitespace (as defined by std.uni.isWhite) or as specified in the second argument.

tzToUTC
long tzToUTC(long adjTime)

Takes the number of hnsecs (100 ns) since midnight, January 1st, 1 A.D. in this time zone's time and converts it to UTC (i.e. std time).

utcToTZ
long utcToTZ(long stdTime)

Takes the number of hnsecs (100 ns) since midnight, January 1st, 1 A.D. in UTC time (i.e. std time) and converts it to this time zone's time.

Manifest constants

defaultTZDatabaseDir
enum defaultTZDatabaseDir;

The default directory where the TZ Database files are stored. It's empty for Windows, since Windows doesn't have them. You can also use the TZDatabaseDir version to pass an arbitrary path at compile-time, rather than hard-coding it here. Android concatenates all time zone data into a single file called tzdata and stores it in the directory below.

Properties

hasDST
bool hasDST [@property getter]

Whether this time zone has Daylight Savings Time at any point in time. Note that for some time zone types it may not have DST for current dates but will still return true for hasDST because the time zone did at some point have DST.

Static functions

getInstalledTZNames
string[] getInstalledTZNames(string subName, string tzDatabaseDir)

Returns a list of the names of the time zones installed on the system.

getTimeZone
immutable(PosixTimeZone) getTimeZone(string name, string tzDatabaseDir)

Returns a TimeZone with the give name per the TZ Database. The time zone information is fetched from the TZ Database time zone files in the given directory.

Inherited Members

From TimeZone

name
string name [@property getter]

The name of the time zone. Exactly how the time zone name is formatted depends on the derived class. In the case of PosixTimeZone, it's the TZ Database name, whereas with WindowsTimeZone, it's the name that Windows chose to give the registry key for that time zone (typically the name that they give stdTime if the OS is in English). For other time zone types, what it is depends on how they're implemented.

stdName
string stdName [@property getter]

Typically, the abbreviation (generally 3 or 4 letters) for the time zone when DST is not in effect (e.g. PST). It is not necessarily unique.

dstName
string dstName [@property getter]

Typically, the abbreviation (generally 3 or 4 letters) for the time zone when DST is in effect (e.g. PDT). It is not necessarily unique.

hasDST
bool hasDST [@property getter]

Whether this time zone has Daylight Savings Time at any point in time. Note that for some time zone types it may not have DST for current dates but will still return true for hasDST because the time zone did at some point have DST.

dstInEffect
bool dstInEffect(long stdTime)

Takes the number of hnsecs (100 ns) since midnight, January 1st, 1 A.D. in UTC time (i.e. std time) and returns whether DST is effect in this time zone at the given point in time.

utcToTZ
long utcToTZ(long stdTime)

Takes the number of hnsecs (100 ns) since midnight, January 1st, 1 A.D. in UTC time (i.e. std time) and converts it to this time zone's time.

tzToUTC
long tzToUTC(long adjTime)

Takes the number of hnsecs (100 ns) since midnight, January 1st, 1 A.D. in this time zone's time and converts it to UTC (i.e. std time).

utcOffsetAt
Duration utcOffsetAt(long stdTime)

Returns what the offset from UTC is at the given std time. It includes the DST offset in effect at that time (if any).

See Also

Meta