### Struct

# GLib DateTime

since: 2.26

#### Description

    struct GDateTime {
      /* No available fields */
    }

`GDateTime` is a structure that combines a Gregorian date and time into a single structure.

`GDateTime` provides many conversion and methods to manipulate dates and times. Time precision is provided down to microseconds and the time can range (proleptically) from 0001-01-01 00:00:00 to 9999-12-31 23:59:59.999999. `GDateTime` follows POSIX time in the sense that it is oblivious to leap seconds.

`GDateTime` is an immutable object; once it has been created it cannot be modified further. All modifiers will create a new `GDateTime`. Nearly all such functions can fail due to the date or time going out of range, in which case `NULL` will be returned.

`GDateTime` is reference counted: the reference count is increased by calling `g_date_time_ref()` and decreased by calling `g_date_time_unref()`. When the reference count drops to 0, the resources allocated by the `GDateTime` structure are released.

Many parts of the API may produce non-obvious results. As an example, adding two months to January 31st will yield March 31st whereas adding one month and then one month again will yield either March 28th or March 29th. Also note that adding 24 hours is not always the same as adding one day (since days containing daylight savings time transitions are either 23 or 25 hours in length).

Available since: 2.26

#### Constructors

###### g_date_time_new

Creates a new `GDateTime` corresponding to the given date and time in the time zone `tz`.

since: 2.26

###### g_date_time_new_from_iso8601

Creates a `GDateTime` corresponding to the given ISO 8601 formatted string `text`. ISO 8601 strings of the form are supported, with some extensions from RFC 3339 as mentioned below.

since: 2.56

###### g_date_time_new_from_timeval_local

Creates a `GDateTime` corresponding to the given `GTimeVal` `tv` in the local time zone.

deprecated: 2.62 since: 2.26

###### g_date_time_new_from_timeval_utc

Creates a `GDateTime` corresponding to the given `GTimeVal` `tv` in UTC.

deprecated: 2.62 since: 2.26

###### g_date_time_new_from_unix_local

Creates a `GDateTime` corresponding to the given Unix time `t` in the local time zone.

since: 2.26

###### g_date_time_new_from_unix_local_usec

Creates a `GDateTime` corresponding to the given Unix time `t` in the local time zone.

since: 2.80

###### g_date_time_new_from_unix_utc

Creates a `GDateTime` corresponding to the given Unix time `t` in UTC.

since: 2.26

###### g_date_time_new_from_unix_utc_usec

Creates a `GDateTime` corresponding to the given Unix time `t` in UTC.

since: 2.80

###### g_date_time_new_local

Creates a new `GDateTime` corresponding to the given date and time in the local time zone.

since: 2.26

###### g_date_time_new_now

Creates a `GDateTime` corresponding to this exact instant in the given time zone `tz`. The time is as accurate as the system allows, to a maximum accuracy of 1 microsecond.

since: 2.26

###### g_date_time_new_now_local

Creates a `GDateTime` corresponding to this exact instant in the local time zone.

since: 2.26

###### g_date_time_new_now_utc

Creates a `GDateTime` corresponding to this exact instant in UTC.

since: 2.26

###### g_date_time_new_utc

Creates a new `GDateTime` corresponding to the given date and time in UTC.

since: 2.26

#### Instance methods

###### g_date_time_add

Creates a copy of `datetime` and adds the specified timespan to the copy.

since: 2.26

###### g_date_time_add_days

Creates a copy of `datetime` and adds the specified number of days to the copy. Add negative values to subtract days.

since: 2.26

###### g_date_time_add_full

Creates a new `GDateTime` adding the specified values to the current date and time in `datetime`. Add negative values to subtract.

since: 2.26

###### g_date_time_add_hours

Creates a copy of `datetime` and adds the specified number of hours. Add negative values to subtract hours.

since: 2.26

###### g_date_time_add_minutes

Creates a copy of `datetime` adding the specified number of minutes. Add negative values to subtract minutes.

since: 2.26

###### g_date_time_add_months

Creates a copy of `datetime` and adds the specified number of months to the copy. Add negative values to subtract months.

since: 2.26

###### g_date_time_add_seconds

Creates a copy of `datetime` and adds the specified number of seconds. Add negative values to subtract seconds.

since: 2.26

###### g_date_time_add_weeks

Creates a copy of `datetime` and adds the specified number of weeks to the copy. Add negative values to subtract weeks.

since: 2.26

###### g_date_time_add_years

Creates a copy of `datetime` and adds the specified number of years to the copy. Add negative values to subtract years.

since: 2.26

###### g_date_time_compare

A comparison function for `GDateTimes` that is suitable as a `GCompareFunc`. Both `GDateTimes` must be non-`NULL`.

since: 2.26

###### g_date_time_difference

Calculates the difference in time between `end` and `begin`. The `GTimeSpan` that is returned is effectively `end` - `begin` (ie: positive if the first parameter is larger).

since: 2.26

###### g_date_time_equal

Checks to see if `dt1` and `dt2` are equal.

since: 2.26

###### g_date_time_format

Creates a newly allocated string representing the requested `format`.

since: 2.26

###### g_date_time_format_iso8601

Format `datetime` in ISO 8601 format, including the date, time and time zone, and return that as a UTF-8 encoded string.

since: 2.62

###### g_date_time_get_day_of_month

Retrieves the day of the month represented by `datetime` in the gregorian calendar.

since: 2.26

###### g_date_time_get_day_of_week

Retrieves the ISO 8601 day of the week on which `datetime` falls (1 is Monday, 2 is Tuesday… 7 is Sunday).

since: 2.26

###### g_date_time_get_day_of_year

Retrieves the day of the year represented by `datetime` in the Gregorian calendar.

since: 2.26

###### g_date_time_get_hour

Retrieves the hour of the day represented by `datetime`.

since: 2.26

###### g_date_time_get_microsecond

Retrieves the microsecond of the date represented by `datetime`.

since: 2.26

###### g_date_time_get_minute

Retrieves the minute of the hour represented by `datetime`.

since: 2.26

###### g_date_time_get_month

Retrieves the month of the year represented by `datetime` in the Gregorian calendar.

since: 2.26

###### g_date_time_get_second

Retrieves the second of the minute represented by `datetime`.

since: 2.26

###### g_date_time_get_seconds

Retrieves the number of seconds since the start of the last minute, including the fractional part.

since: 2.26

###### g_date_time_get_timezone

Get the time zone for this `datetime`.

since: 2.58

###### g_date_time_get_timezone_abbreviation

Determines the time zone abbreviation to be used at the time and in the time zone of `datetime`.

since: 2.26

###### g_date_time_get_utc_offset

Determines the offset to UTC in effect at the time and in the time zone of `datetime`.

since: 2.26

###### g_date_time_get_week_numbering_year

Returns the ISO 8601 week-numbering year in which the week containing `datetime` falls.

since: 2.26

###### g_date_time_get_week_of_year

Returns the ISO 8601 week number for the week containing `datetime`. The ISO 8601 week number is the same for every day of the week (from Moday through Sunday). That can produce some unusual results (described below).

since: 2.26

###### g_date_time_get_year

Retrieves the year represented by `datetime` in the Gregorian calendar.

since: 2.26

###### g_date_time_get_ymd

Retrieves the Gregorian day, month, and year of a given `GDateTime`.

since: 2.26

###### g_date_time_hash

Hashes `datetime` into a #guint, suitable for use within `GHashTable`.

since: 2.26

###### g_date_time_is_daylight_savings

Determines if daylight savings time is in effect at the time and in the time zone of `datetime`.

since: 2.26

###### g_date_time_ref

Atomically increments the reference count of `datetime` by one.

since: 2.26

###### g_date_time_to_local

Creates a new `GDateTime` corresponding to the same instant in time as `datetime`, but in the local time zone.

since: 2.26

###### g_date_time_to_timeval

Stores the instant in time that `datetime` represents into `tv`.

deprecated: 2.62 since: 2.26

###### g_date_time_to_timezone

Create a new `GDateTime` corresponding to the same instant in time as `datetime`, but in the time zone `tz`.

since: 2.26

###### g_date_time_to_unix

Gives the Unix time corresponding to `datetime`, rounding down to the nearest second.

since: 2.26

###### g_date_time_to_unix_usec

Gives the Unix time corresponding to `datetime`, in microseconds.

since: 2.80

###### g_date_time_to_utc

Creates a new `GDateTime` corresponding to the same instant in time as `datetime`, but in UTC.

since: 2.26

###### g_date_time_unref

Atomically decrements the reference count of `datetime` by one.

since: 2.26