<!-- ##### SECTION Title ##### -->
Date and Time Functions

<!-- ##### SECTION Short_Description ##### -->
calendrical calculations and miscellaneous time stuff.

<!-- ##### SECTION Long_Description ##### -->
<para>
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 g_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 <emphasis>day</emphasis>.
</para>

<para>
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).
</para>

<para>
#GDate is simple to use. First you need a "blank" date; you can get a
dynamically allocated date from g_date_new(), or you can declare an
automatic variable or array and initialize it to a sane state by
calling g_date_clear(). A cleared date is sane; it's safe to call
g_date_set_dmy() and the other mutator functions to initialize the
value of a cleared date. However, a cleared date is initially
<emphasis>invalid</emphasis>, 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
g_date_valid() predicate. g_date_valid() is also used to check for
errors with g_date_set_parse() and other functions that can
fail. Dates can be invalidated by calling g_date_clear() again.
</para>

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

<para>
GLib doesn't contain any time-manipulation functions; however, there
is a #GTime typedef which is equivalent to <type>time_t</type>, and a #GTimeVal
struct which represents a more precise time (with microseconds). You
can request the current time as a #GTimeVal with g_get_current_time().
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### MACRO G_USEC_PER_SEC ##### -->
<para>
Number of microseconds in one second (1 million). This macro is provided for
code readability.
</para>



<!-- ##### STRUCT GTimeVal ##### -->
<para>
Represents a precise time, with seconds and microseconds. Same as the
<structname>struct timeval</structname> returned by the
<function>gettimeofday()</function> UNIX call.
</para>

@tv_sec: seconds.
@tv_usec: microseconds.

<!-- ##### FUNCTION g_get_current_time ##### -->
<para>
</para>

@result: 


<!-- ##### FUNCTION g_usleep ##### -->
<para>
Pauses the current thread for the given number of microseconds. There
are 1 million microseconds per second (represented by the
#G_USEC_PER_SEC macro). g_usleep() may have limited precision,
depending on hardware and operating system; don't rely on the exact
length of the sleep.
</para>

@microseconds: number of microseconds to pause.


<!-- ##### FUNCTION g_time_val_add ##### -->
<para>

</para>

@time_: 
@microseconds: 


<!-- ##### STRUCT GDate ##### -->
<para>
Represents a day between January 1, Year 1 and a few thousand years in
the future. None of its members should be accessed directly. If the
<structname>GDate</structname> is obtained from g_date_new(), it will
be safe to mutate but invalid and thus not safe for calendrical computations.
If it's declared on the stack, it will contain garbage so must be
initialized with g_date_clear(). g_date_clear() makes the date invalid
but sane. An invalid date doesn't represent a day, it's "empty." A
date becomes valid after you set it to a Julian day or you set a day,
month, and year.
</para>

@julian_days: 
@julian: 
@dmy: 
@day: 
@month: 
@year: 

<!-- ##### TYPEDEF GTime ##### -->
<para>
Simply a replacement for <type>time_t</type>. Unrelated to #GTimer.
</para>


<!-- ##### ENUM GDateDMY ##### -->
<para>
This enumeration isn't used in the API, but may be useful if you need
to mark a number as a day, month, or year.
</para>

@G_DATE_DAY: 
@G_DATE_MONTH: 
@G_DATE_YEAR: 

<!-- ##### TYPEDEF GDateDay ##### -->
<para>
Integer representing a day of the month; between 1 and
31. #G_DATE_BAD_DAY represents an invalid day of the month.
</para>


<!-- ##### ENUM GDateMonth ##### -->
<para>
Enumeration representing a month; values are #G_DATE_JANUARY,
#G_DATE_FEBRUARY, etc. #G_DATE_BAD_MONTH is the invalid value.
</para>

@G_DATE_BAD_MONTH: invalid value.
@G_DATE_JANUARY: January.
@G_DATE_FEBRUARY: February.
@G_DATE_MARCH: March.
@G_DATE_APRIL: April.
@G_DATE_MAY: May.
@G_DATE_JUNE: June.
@G_DATE_JULY: July.
@G_DATE_AUGUST: August.
@G_DATE_SEPTEMBER: September.
@G_DATE_OCTOBER: October.
@G_DATE_NOVEMBER: November.
@G_DATE_DECEMBER: December.

<!-- ##### TYPEDEF GDateYear ##### -->
<para>
Integer representing a year; #G_DATE_BAD_YEAR is the invalid
value. The year must be 1 or higher; negative (BC) years are not
allowed. The year is represented with four digits.
</para>


<!-- ##### ENUM GDateWeekday ##### -->
<para>
Enumeration representing a day of the week; #G_DATE_MONDAY,
#G_DATE_TUESDAY, etc. #G_DATE_BAD_WEEKDAY is an invalid weekday.
</para>

@G_DATE_BAD_WEEKDAY: invalid value.
@G_DATE_MONDAY: Monday.
@G_DATE_TUESDAY: Tuesday.
@G_DATE_WEDNESDAY: Wednesday.
@G_DATE_THURSDAY: Thursday.
@G_DATE_FRIDAY: Friday.
@G_DATE_SATURDAY: Saturday.
@G_DATE_SUNDAY: Sunday.

<!-- ##### MACRO G_DATE_BAD_DAY ##### -->
<para>
Represents an invalid #GDateDay.
</para>



<!-- ##### MACRO G_DATE_BAD_JULIAN ##### -->
<para>
Represents an invalid Julian day number.
</para>



<!-- ##### MACRO G_DATE_BAD_YEAR ##### -->
<para>
Represents an invalid year.
</para>



<!-- ##### FUNCTION g_date_new ##### -->
<para>
Allocates a #GDate and initializes it to a sane state. The new date will
be cleared (as if you'd called g_date_clear()) but invalid (it won't
represent an existing day). Free the return value with g_date_free().
</para>

@Returns: a newly-allocated #GDate.


<!-- ##### FUNCTION g_date_new_dmy ##### -->
<para>
Like g_date_new(), but also sets the value of the date. Assuming the
day-month-year triplet you pass in represents an existing day, the
returned date will be valid.
</para>

@day: day of the month.
@month: month of the year.
@year: year
@Returns: a newly-allocated #GDate initialized with @day, @month, and @year.


<!-- ##### FUNCTION g_date_new_julian ##### -->
<para>
Like g_date_new(), but also sets the value of the date. Assuming the
Julian day number you pass in is valid (greater than 0, less than an
unreasonably large number), the returned date will be valid.
</para>

@julian_day: days since January 1, Year 1.
@Returns: a newly-allocated #GDate initialized with @julian_day.


<!-- ##### FUNCTION g_date_clear ##### -->
<para>
Initializes one or more #GDate structs to a sane 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().
</para>

@date: pointer to one or more dates to clear.
@n_dates: number of dates to clear.


<!-- ##### FUNCTION g_date_free ##### -->
<para>
Frees a #GDate returned from g_date_new().
</para>

@date: a #GDate.


<!-- ##### FUNCTION g_date_set_day ##### -->
<para>
Sets the day of the month for a #GDate. If the resulting day-month-year
triplet is invalid, the date will be invalid.
</para>

@date: a #GDate.
@day: day to set.


<!-- ##### FUNCTION g_date_set_month ##### -->
<para>
Sets the month of the year for a #GDate.  If the resulting
day-month-year triplet is invalid, the date will be invalid.
</para>

@date: a #GDate.
@month: month to set.


<!-- ##### FUNCTION g_date_set_year ##### -->
<para>
Sets the year for a #GDate. If the resulting day-month-year triplet is
invalid, the date will be invalid.
</para>

@date: a #GDate.
@year: year to set.


<!-- ##### FUNCTION g_date_set_dmy ##### -->
<para>
Sets the value of a #GDate from a day, month, and year. The day-month-year 
triplet must be valid; if you aren't sure it is, call g_date_valid_dmy() to
check before you set it.
</para>

@date: a #GDate.
@day: day.
@month: month.
@y: year.


<!-- ##### FUNCTION g_date_set_julian ##### -->
<para>
Sets the value of a #GDate from a Julian day number.
</para>

@date: a #GDate.
@julian_date: Julian day number (days since January 1, Year 1).


<!-- ##### FUNCTION g_date_set_time ##### -->
<para>
Sets the value of a date from a #GTime (<type>time_t</type>) value. 
To set the value of a date to the current day, you could write:
<informalexample><programlisting>
g_date_set_time (date, time (NULL));
</programlisting></informalexample>
</para>

@date: a #GDate.
@time_: #GTime value to set.


<!-- ##### FUNCTION g_date_set_parse ##### -->
<para>
Parses a user-inputted string @str, and try to figure out what date it
represents, taking the current locale 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.
</para>

<para>
This function is not appropriate for file formats and the like; it
isn't very precise, and its exact behavior varies with the
locale. It's intended to be a heuristic routine that guesses what the
user means by a given string (and it does work pretty well in that
capacity).
</para>

@date: a #GDate to fill in.
@str: string to parse.


<!-- ##### FUNCTION g_date_add_days ##### -->
<para>
Increments a date some number of days. To move forward by weeks, add
weeks*7 days. The date must be valid.
</para>

@date: a #GDate to increment.
@n_days: number of days to move the date forward.


<!-- ##### FUNCTION g_date_subtract_days ##### -->
<para>
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.
</para>

@date: a #GDate to decrement.
@n_days: number of days to move.


<!-- ##### FUNCTION g_date_add_months ##### -->
<para>
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.
</para>

@date: a #GDate to increment.
@n_months: number of months to move forward.


<!-- ##### FUNCTION g_date_subtract_months ##### -->
<para>
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.
</para>

@date: a #GDate to decrement.
@n_months: number of months to move.


<!-- ##### FUNCTION g_date_add_years ##### -->
<para>
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.
</para>

@date: a #GDate to increment.
@n_years: number of years to move forward.


<!-- ##### FUNCTION g_date_subtract_years ##### -->
<para>
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.
</para>

@date: a #GDate to decrement.
@n_years: number of years to move.


<!-- ##### FUNCTION g_date_days_between ##### -->
<para>
Computes the number of days between two dates.
If @date2 is prior to @date1, the returned value is negative.
Both dates must be valid.
</para>

@date1: the first date.
@date2: the second date.
@Returns: the number of days between @date1 and @date2.


<!-- ##### FUNCTION g_date_compare ##### -->
<para>
<function>qsort()</function>-style comparsion function for dates. Both
dates must be valid.
</para>

@lhs: first date to compare.
@rhs: second date to compare.
@Returns: 0 for equal, less than zero if @lhs is less than @rhs,
greater than zero if @lhs is greater than @rhs.


<!-- ##### FUNCTION g_date_clamp ##### -->
<para>
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.
Either @min_date and @max_date may be %NULL.  All non-%NULL dates
must be valid.
</para>

@date: a #GDate to clamp.
@min_date: minimum accepted value for @date.
@max_date: maximum accepted value for @date.


<!-- ##### FUNCTION g_date_order ##### -->
<para>
Checks if @date1 is less than or equal to @date2,
and swap the values if this is not the case.
</para>

@date1: the first date.
@date2: the second date.


<!-- ##### FUNCTION g_date_get_day ##### -->
<para>
Returns the day of the month. The date must be valid.
</para>

@date: a #GDate to extract the day of the month from.
@Returns: day of the month.


<!-- ##### FUNCTION g_date_get_month ##### -->
<para>
Returns the month of the year. The date must be valid.
</para>

@date: a #GDate to get the month from.
@Returns: month of the year as a #GDateMonth.


<!-- ##### FUNCTION g_date_get_year ##### -->
<para>
Returns the year of a #GDate. The date must be valid.
</para>

@date: a #GDate.
@Returns: year in which the date falls.


<!-- ##### FUNCTION g_date_get_julian ##### -->
<para>
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.
</para>

@date: a #GDate to extract the Julian day from.
@Returns: Julian day.


<!-- ##### FUNCTION g_date_get_weekday ##### -->
<para>
Returns the day of the week for a #GDate. The date must be valid.
</para>

@date: a #GDate.
@Returns: day of the week as a #GDateWeekday.


<!-- ##### FUNCTION g_date_get_day_of_year ##### -->
<para>
Returns the day of the year, where Jan 1 is the first day of the
year. The date must be valid.
</para>

@date: a #GDate to extract day of year from.
@Returns: day of the year.


<!-- ##### FUNCTION g_date_get_days_in_month ##### -->
<para>
Returns the number of days in a month, taking leap years into account.
</para>

@month: month.
@year: year.
@Returns: number of days in @month during the @year.


<!-- ##### FUNCTION g_date_is_first_of_month ##### -->
<para>
Returns %TRUE if the date is on the first of a month. The date must be valid.
</para>

@date: a #GDate to check.
@Returns: %TRUE if the date is the first of the month.


<!-- ##### FUNCTION g_date_is_last_of_month ##### -->
<para>
Returns %TRUE if the date is the last day of the month. The date must be valid.
</para>

@date: a #GDate to check.
@Returns: %TRUE if the date is the last day of the month.


<!-- ##### FUNCTION g_date_is_leap_year ##### -->
<para>
Returns %TRUE if the year is a leap year.
</para>

@year: year to check.
@Returns: %TRUE if the year is a leap year.


<!-- ##### FUNCTION g_date_get_monday_week_of_year ##### -->
<para>
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.
</para>

@date: a #GDate.
@Returns: week of the year.


<!-- ##### FUNCTION g_date_get_monday_weeks_in_year ##### -->
<para>
Returns the number of weeks in the year, where weeks are taken to start
on Monday. Will be 52 or 53. The date must be valid. (Years always have 52
7-day periods, plus 1 or 2 extra days depending on whether it's a leap
year. This function is basically telling you how many Mondays are in
the year, i.e. there are 53 Mondays if one of the extra days happens
to be a Monday.)
</para>

@year: a year.
@Returns: number of Mondays in the year.


<!-- ##### FUNCTION g_date_get_sunday_week_of_year ##### -->
<para>
Returns the week of the year during which this date falls, if weeks 
are understood to being on Sunday. The date must be valid. Can return 0 if 
the day is before the first Sunday of the year.
</para>

@date: a #GDate.
@Returns: week number.


<!-- ##### FUNCTION g_date_get_sunday_weeks_in_year ##### -->
<para>
Returns the number of weeks in the year, where weeks are taken to start
on Sunday. Will be 52 or 53. The date must be valid. (Years always have 52
7-day periods, plus 1 or 2 extra days depending on whether it's a leap
year. This function is basically telling you how many Sundays are in
the year, i.e. there are 53 Sundays if one of the extra days happens
to be a Sunday.)
</para>

@year: year to count weeks in.
@Returns: number of weeks.


<!-- ##### FUNCTION g_date_get_iso8601_week_of_year ##### -->
<para>

</para>

@date: 
@Returns: 


<!-- ##### FUNCTION g_date_strftime ##### -->
<para>
Generates a printed representation of the date, in a locale-specific
way. Works just like the standard C <function>strftime()</function>
function, but only accepts date-related formats; time-related formats
give undefined results. Date must be valid.
</para>

@s: destination buffer.
@slen: buffer size.
@format: format string.
@date: valid #GDate.
@Returns: number of characters written to the buffer, or 0 the buffer was too small.


<!-- ##### FUNCTION g_date_to_struct_tm ##### -->
<para>
Fills in the date-related bits of a <structname>struct tm</structname>
using the @date value. Initializes the non-date parts with something
sane but meaningless.
</para>

@date: a #GDate to set the <structname>struct tm</structname> from.
@tm: <structname>struct tm</structname> to fill.


<!-- ##### FUNCTION g_date_valid ##### -->
<para>
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.
</para>

@date: a #GDate to check.
@Returns: Whether the date is valid.


<!-- ##### FUNCTION g_date_valid_day ##### -->
<para>
Returns %TRUE if the day of the month is valid (a day is valid if it's
between 1 and 31 inclusive).
</para>

@day: day to check.
@Returns: %TRUE if the day is valid.


<!-- ##### FUNCTION g_date_valid_month ##### -->
<para>
Returns %TRUE if the month value is valid. The 12 #GDateMonth
enumeration values are the only valid months.
</para>

@month: month.
@Returns: %TRUE if the month is valid.


<!-- ##### FUNCTION g_date_valid_year ##### -->
<para>
Returns %TRUE if the year is valid. Any year greater than 0 is valid,
though there is a 16-bit limit to what #GDate will understand.
</para>

@year: year.
@Returns: %TRUE if the year is valid.


<!-- ##### FUNCTION g_date_valid_dmy ##### -->
<para>
Returns %TRUE if the day-month-year triplet forms a valid, existing day
in the range of days #GDate understands (Year 1 or later, no more than
a few thousand years in the future).
</para>

@day: day.
@month: month.
@year: year.
@Returns: %TRUE if the date is a valid one.


<!-- ##### FUNCTION g_date_valid_julian ##### -->
<para>
Returns %TRUE if the Julian day is valid. Anything greater than zero is basically a
valid Julian, though there is a 32-bit limit.
</para>

@julian_date: Julian day to check.
@Returns: %TRUE if the Julian day is valid.


<!-- ##### FUNCTION g_date_valid_weekday ##### -->
<para>
Returns %TRUE if the weekday is valid. The 7 #GDateWeekday enumeration
values are the only valid weekdays.
</para>

@weekday: weekday.
@Returns: %TRUE if the weekday is valid.


