Table of Contents

Class Time

Namespace
Godot
Assembly
GodotSharp.dll

The Time singleton allows converting time between various formats and also getting time information from the system.

This class conforms with as many of the ISO 8601 standards as possible. All dates follow the Proleptic Gregorian calendar. As such, the day before 1582-10-15 is 1582-10-14, not 1582-10-04. The year before 1 AD (aka 1 BC) is number 0, with the year before that (2 BC) being -1, etc.

Conversion methods assume "the same timezone", and do not handle timezone conversions or DST automatically. Leap seconds are also not handled, they must be done manually if desired. Suffixes such as "Z" are not handled, you need to strip them away manually.

When getting time information from the system, the time can either be in the local timezone or UTC depending on the utc parameter. However, the GetUnixTimeFromSystem() method always uses UTC as it returns the seconds passed since the Unix epoch.

Important: The _from_system methods use the system clock that the user can manually set. Never use this method for precise time calculation since its results are subject to automatic adjustments by the user or the operating system. Always useGetTicksUsec() or GetTicksMsec() for precise time calculation instead, since they are guaranteed to be monotonic (i.e. never decrease).

public static class Time
Inheritance
Time
Inherited Members

Properties

Singleton

public static TimeInstance Singleton { get; }

Property Value

TimeInstance

Methods

GetDateDictFromSystem(bool)

Returns the current date as a dictionary of keys: year, month, day, and weekday.

The returned values are in the system's local time when utc is false, otherwise they are in UTC.

public static Dictionary GetDateDictFromSystem(bool utc = false)

Parameters

utc bool

Returns

Dictionary

GetDateDictFromUnixTime(long)

Converts the given Unix timestamp to a dictionary of keys: year, month, day, and weekday.

public static Dictionary GetDateDictFromUnixTime(long unixTimeVal)

Parameters

unixTimeVal long

Returns

Dictionary

GetDateStringFromSystem(bool)

Returns the current date as an ISO 8601 date string (YYYY-MM-DD).

The returned values are in the system's local time when utc is false, otherwise they are in UTC.

public static string GetDateStringFromSystem(bool utc = false)

Parameters

utc bool

Returns

string

GetDateStringFromUnixTime(long)

Converts the given Unix timestamp to an ISO 8601 date string (YYYY-MM-DD).

public static string GetDateStringFromUnixTime(long unixTimeVal)

Parameters

unixTimeVal long

Returns

string

GetDatetimeDictFromDatetimeString(string, bool)

Converts the given ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS) to a dictionary of keys: year, month, day, weekday, hour, minute, and second.

If weekday is false, then the weekday entry is excluded (the calculation is relatively expensive).

Note: Any decimal fraction in the time string will be ignored silently.

public static Dictionary GetDatetimeDictFromDatetimeString(string datetime, bool weekday)

Parameters

datetime string
weekday bool

Returns

Dictionary

GetDatetimeDictFromSystem(bool)

Returns the current date as a dictionary of keys: year, month, day, weekday, hour, minute, second, and dst (Daylight Savings Time).

public static Dictionary GetDatetimeDictFromSystem(bool utc = false)

Parameters

utc bool

Returns

Dictionary

GetDatetimeDictFromUnixTime(long)

Converts the given Unix timestamp to a dictionary of keys: year, month, day, weekday, hour, minute, and second.

The returned Dictionary's values will be the same as the GetDatetimeDictFromSystem(bool) if the Unix timestamp is the current time, with the exception of Daylight Savings Time as it cannot be determined from the epoch.

public static Dictionary GetDatetimeDictFromUnixTime(long unixTimeVal)

Parameters

unixTimeVal long

Returns

Dictionary

GetDatetimeStringFromDatetimeDict(Dictionary, bool)

Converts the given dictionary of keys to an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).

The given dictionary can be populated with the following keys: year, month, day, hour, minute, and second. Any other entries (including dst) are ignored.

If the dictionary is empty, 0 is returned. If some keys are omitted, they default to the equivalent values for the Unix epoch timestamp 0 (1970-01-01 at 00:00:00).

If useSpace is true, the date and time bits are separated by an empty space character instead of the letter T.

public static string GetDatetimeStringFromDatetimeDict(Dictionary datetime, bool useSpace)

Parameters

datetime Dictionary
useSpace bool

Returns

string

GetDatetimeStringFromSystem(bool, bool)

Returns the current date and time as an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).

The returned values are in the system's local time when utc is false, otherwise they are in UTC.

If useSpace is true, the date and time bits are separated by an empty space character instead of the letter T.

public static string GetDatetimeStringFromSystem(bool utc = false, bool useSpace = false)

Parameters

utc bool
useSpace bool

Returns

string

GetDatetimeStringFromUnixTime(long, bool)

Converts the given Unix timestamp to an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).

If useSpace is true, the date and time bits are separated by an empty space character instead of the letter T.

public static string GetDatetimeStringFromUnixTime(long unixTimeVal, bool useSpace = false)

Parameters

unixTimeVal long
useSpace bool

Returns

string

GetOffsetStringFromOffsetMinutes(long)

Converts the given timezone offset in minutes to a timezone offset string. For example, -480 returns "-08:00", 345 returns "+05:45", and 0 returns "+00:00".

public static string GetOffsetStringFromOffsetMinutes(long offsetMinutes)

Parameters

offsetMinutes long

Returns

string

GetTicksMsec()

Returns the amount of time passed in milliseconds since the engine started.

Will always be positive or 0 and uses a 64-bit value (it will wrap after roughly 500 million years).

public static ulong GetTicksMsec()

Returns

ulong

GetTicksUsec()

Returns the amount of time passed in microseconds since the engine started.

Will always be positive or 0 and uses a 64-bit value (it will wrap after roughly half a million years).

public static ulong GetTicksUsec()

Returns

ulong

GetTimeDictFromSystem(bool)

Returns the current time as a dictionary of keys: hour, minute, and second.

The returned values are in the system's local time when utc is false, otherwise they are in UTC.

public static Dictionary GetTimeDictFromSystem(bool utc = false)

Parameters

utc bool

Returns

Dictionary

GetTimeDictFromUnixTime(long)

Converts the given time to a dictionary of keys: hour, minute, and second.

public static Dictionary GetTimeDictFromUnixTime(long unixTimeVal)

Parameters

unixTimeVal long

Returns

Dictionary

GetTimeStringFromSystem(bool)

Returns the current time as an ISO 8601 time string (HH:MM:SS).

The returned values are in the system's local time when utc is false, otherwise they are in UTC.

public static string GetTimeStringFromSystem(bool utc = false)

Parameters

utc bool

Returns

string

GetTimeStringFromUnixTime(long)

Converts the given Unix timestamp to an ISO 8601 time string (HH:MM:SS).

public static string GetTimeStringFromUnixTime(long unixTimeVal)

Parameters

unixTimeVal long

Returns

string

GetTimeZoneFromSystem()

Returns the current time zone as a dictionary of keys: bias and name.

- bias is the offset from UTC in minutes, since not all time zones are multiples of an hour from UTC.

- name is the localized name of the time zone, according to the OS locale settings of the current user.

public static Dictionary GetTimeZoneFromSystem()

Returns

Dictionary

GetUnixTimeFromDatetimeDict(Dictionary)

Converts a dictionary of time values to a Unix timestamp.

The given dictionary can be populated with the following keys: year, month, day, hour, minute, and second. Any other entries (including dst) are ignored.

If the dictionary is empty, 0 is returned. If some keys are omitted, they default to the equivalent values for the Unix epoch timestamp 0 (1970-01-01 at 00:00:00).

You can pass the output from GetDatetimeDictFromUnixTime(long) directly into this function and get the same as what was put in.

Note: Unix timestamps are often in UTC. This method does not do any timezone conversion, so the timestamp will be in the same timezone as the given datetime dictionary.

public static long GetUnixTimeFromDatetimeDict(Dictionary datetime)

Parameters

datetime Dictionary

Returns

long

GetUnixTimeFromDatetimeString(string)

Converts the given ISO 8601 date and/or time string to a Unix timestamp. The string can contain a date only, a time only, or both.

Note: Unix timestamps are often in UTC. This method does not do any timezone conversion, so the timestamp will be in the same timezone as the given datetime string.

Note: Any decimal fraction in the time string will be ignored silently.

public static long GetUnixTimeFromDatetimeString(string datetime)

Parameters

datetime string

Returns

long

GetUnixTimeFromSystem()

Returns the current Unix timestamp in seconds based on the system time in UTC. This method is implemented by the operating system and always returns the time in UTC. The Unix timestamp is the number of seconds passed since 1970-01-01 at 00:00:00, the Unix epoch.

Note: Unlike other methods that use integer timestamps, this method returns the timestamp as a float for sub-second precision.

public static double GetUnixTimeFromSystem()

Returns

double