Date

class Date(pointer: <Error class: unknown class><<Error class: unknown class>>) : Record

GDate is a struct for calendrical calculations.

The GDate data structure represents a day between January 1, Year 1, and sometime a few thousand years in the future (right now it will go to the year 65535 or so, but method@GLib.Date.set_parse only parses up to the year 8000 or so - just count on "a few thousand"). GDate is meant to represent everyday dates, not astronomical dates or historical dates or ISO timestamps or the like. It extrapolates the current Gregorian calendar forward and backward in time; there is no attempt to change the calendar to match time periods or locations. GDate does not store time information; it represents a day.

The GDate implementation has several nice features; it is only a 64-bit struct, so storing large numbers of dates is very efficient. It can keep both a Julian and day-month-year representation of the date, since some calculations are much easier with one representation or the other. A Julian representation is simply a count of days since some fixed day in the past; for #GDate the fixed day is January 1, 1 AD. ("Julian" dates in the #GDate API aren't really Julian dates in the technical sense; technically, Julian dates count from the start of the Julian period, Jan 1, 4713 BC).

GDate is simple to use. First you need a "blank" date; you can get a dynamically allocated date from ctor@GLib.Date.new, or you can declare an automatic variable or array and initialize it by calling method@GLib.Date.clear. A cleared date is safe; it's safe to call method@GLib.Date.set_dmy and the other mutator functions to initialize the value of a cleared date. However, a cleared date is initially invalid, meaning that it doesn't represent a day that exists. It is undefined to call any of the date calculation routines on an invalid date. If you obtain a date from a user or other unpredictable source, you should check its validity with the method@GLib.Date.valid predicate. method@GLib.Date.valid is also used to check for errors with method@GLib.Date.set_parse and other functions that can fail. Dates can be invalidated by calling method@GLib.Date.clear again.

It is very important to use the API to access the GDate struct. Often only the day-month-year or only the Julian representation is valid. Sometimes neither is valid. Use the API.

GLib also features GDateTime which represents a precise time.

Skipped during bindings generation

  • method get_day: Return type DateDay is unsupported

  • method get_year: Return type DateYear is unsupported

  • parameter day: DateDay

  • parameter day: DateDay

  • parameter time_: Time

  • parameter timet: time_t

  • parameter year: DateYear

  • parameter tm: gpointer

  • parameter day: DateDay

  • parameter year: DateYear

  • parameter year: DateYear

  • parameter year: DateYear

  • parameter year: DateYear

  • function strftime: C function g_date_strftime is ignored

  • parameter day: DateDay

  • parameter day: DateDay

  • parameter year: DateYear

Constructors

Link copied to clipboard
constructor(pointer: <Error class: unknown class><<Error class: unknown class>>)

Types

Link copied to clipboard
object Companion : RecordCompanion<Date, <Error class: unknown class>>

Properties

Link copied to clipboard
var day: <Error class: unknown class>

the day of the day-month-year representation of the date, as a number between 1 and 31

Link copied to clipboard
var dmy: <Error class: unknown class>

this is set if @day, @month and @year are valid

Link copied to clipboard
val glibDatePointer: <Error class: unknown class><<Error class: unknown class>>
Link copied to clipboard
var julian: <Error class: unknown class>

this bit is set if @julian_days is valid

Link copied to clipboard
var julianDays: <Error class: unknown class>

the Julian representation of the date

Link copied to clipboard
var month: <Error class: unknown class>

the month of the day-month-year representation of the date, as a number between 1 and 12

Link copied to clipboard
var year: <Error class: unknown class>

the year of the day-month-year representation of the date

Functions

Link copied to clipboard
fun addDays(nDays: <Error class: unknown class>)

Increments a date some number of days. To move forward by weeks, add weeks*7 days. The date must be valid.

Link copied to clipboard
fun addMonths(nMonths: <Error class: unknown class>)

Increments a date by some number of months. If the day of the month is greater than 28, this routine may change the day of the month (because the destination month may not have the current day in it). The date must be valid.

Link copied to clipboard
fun addYears(nYears: <Error class: unknown class>)

Increments a date by some number of years. If the date is February 29, and the destination year is not a leap year, the date will be changed to February 28. The date must be valid.

Link copied to clipboard
fun clamp(minDate: Date, maxDate: Date)

If @date is prior to @min_date, sets @date equal to @min_date. If @date falls after @max_date, sets @date equal to @max_date. Otherwise, @date is unchanged. Either of @min_date and @max_date may be null. All non-null dates must be valid.

Link copied to clipboard
fun clear(nDates: <Error class: unknown class>)

Initializes one or more #GDate structs to a safe but invalid state. The cleared dates will not represent an existing date, but will not contain garbage. Useful to init a date declared on the stack. Validity can be tested with g_date_valid().

Link copied to clipboard
fun compare(rhs: Date): Int

qsort()-style comparison function for dates. Both dates must be valid.

Link copied to clipboard
fun copy(): Date

Copies a GDate to a newly-allocated GDate. If the input was invalid (as determined by g_date_valid()), the invalid state will be copied as is into the new object.

Link copied to clipboard
fun daysBetween(date2: Date): Int

Computes the number of days between two dates. If @date2 is prior to @date1, the returned value is negative. Both dates must be valid.

Link copied to clipboard
fun free()

Frees a #GDate returned from g_date_new().

Link copied to clipboard
fun getDayOfYear(): <Error class: unknown class>

Returns the day of the year, where Jan 1 is the first day of the year. The date must be valid.

Link copied to clipboard
fun getIso8601WeekOfYear(): <Error class: unknown class>

Returns the week of the year, where weeks are interpreted according to ISO 8601.

Link copied to clipboard
fun getJulian(): <Error class: unknown class>

Returns the Julian day or "serial number" of the #GDate. The Julian day is simply the number of days since January 1, Year 1; i.e., January 1, Year 1 is Julian day 1; January 2, Year 1 is Julian day 2, etc. The date must be valid.

Link copied to clipboard
fun getMondayWeekOfYear(): <Error class: unknown class>

Returns the week of the year, where weeks are understood to start on Monday. If the date is before the first Monday of the year, return 0. The date must be valid.

Link copied to clipboard

Returns the month of the year. The date must be valid.

Link copied to clipboard
fun getSundayWeekOfYear(): <Error class: unknown class>

Returns the week of the year during which this date falls, if weeks are understood to begin on Sunday. The date must be valid. Can return 0 if the day is before the first Sunday of the year.

Link copied to clipboard

Returns the day of the week for a #GDate. The date must be valid.

Link copied to clipboard

Returns true if the date is on the first of a month. The date must be valid.

Link copied to clipboard

Returns true if the date is the last day of the month. The date must be valid.

Link copied to clipboard
fun order(date2: Date)

Checks if @date1 is less than or equal to @date2, and swap the values if this is not the case.

Link copied to clipboard
fun setJulian(julianDate: <Error class: unknown class>)

Sets the value of a #GDate from a Julian day number.

Link copied to clipboard
fun setMonth(month: DateMonth)

Sets the month of the year for a #GDate. If the resulting day-month-year triplet is invalid, the date will be invalid.

Link copied to clipboard
fun setParse(str: String)

Parses a user-inputted string @str, and try to figure out what date it represents, taking the setlocale into account. If the string is successfully parsed, the date will be valid after the call. Otherwise, it will be invalid. You should check using g_date_valid() to see whether the parsing succeeded.

Link copied to clipboard
fun setTimeVal(timeval: TimeVal)

Sets the value of a date from a #GTimeVal value. Note that the

Link copied to clipboard
fun subtractDays(nDays: <Error class: unknown class>)

Moves a date some number of days into the past. To move by weeks, just move by weeks*7 days. The date must be valid.

Link copied to clipboard
fun subtractMonths(nMonths: <Error class: unknown class>)

Moves a date some number of months into the past. If the current day of the month doesn't exist in the destination month, the day of the month may change. The date must be valid.

Link copied to clipboard
fun subtractYears(nYears: <Error class: unknown class>)

Moves a date some number of years into the past. If the current day doesn't exist in the destination year (i.e. it's February 29 and you move to a non-leap-year) then the day is changed to February 29. The date must be valid.

Link copied to clipboard
fun valid(): Boolean

Returns true if the #GDate represents an existing day. The date must not contain garbage; it should have been initialized with g_date_clear() if it wasn't allocated by one of the g_date_new() variants.