2 /*======================================================================
4 CREATOR: eric 02 June 2000
10 (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of either:
15 The LGPL as published by the Free Software Foundation, version
16 2.1, available at: http://www.fsf.org/copyleft/lesser.html
20 The Mozilla Public License Version 1.0. You may obtain a copy of
21 the License at http://www.mozilla.org/MPL/
23 The Original Code is eric. The Initial Developer of the Original
27 ======================================================================*/
34 /* icaltime_span is returned by icalcomponent_get_span() */
35 struct icaltime_span {
36 time_t start; /* in UTC */
37 time_t end; /* in UTC */
38 int is_busy; /* 1->busy time, 0-> free time */
51 int is_utc; /* 1-> time is in UTC timezone */
53 int is_date; /* 1 -> interpret this as date. */
57 /* Convert seconds past UNIX epoch to a timetype*/
58 struct icaltimetype icaltime_from_timet(time_t v, int is_date);
60 /* Return the time as seconds past the UNIX epoch */
61 time_t icaltime_as_timet(struct icaltimetype);
63 /* Return a string represention of the time, in RFC2445 format. The
64 string is owned by libical */
65 char* icaltime_as_ical_string(struct icaltimetype tt);
67 /* Like icaltime_from_timet(), except that the input may be in seconds
68 past the epoch in floating time. This routine is deprecated */
69 struct icaltimetype icaltime_from_int(int v, int is_date, int is_utc);
71 /* Like icaltime_as_timet, but in a floating epoch. This routine is deprecated */
72 int icaltime_as_int(struct icaltimetype);
74 /* create a time from an ISO format string */
75 struct icaltimetype icaltime_from_string(const char* str);
77 /* Routines for handling timezones */
78 /* Return the offset of the named zone as seconds. tt is a time
79 indicating the date for which you want the offset */
80 int icaltime_utc_offset(struct icaltimetype tt, const char* tzid);
82 /* convert tt, of timezone tzid, into a utc time. Does nothing if the
83 time is already UTC. */
84 struct icaltimetype icaltime_as_utc(struct icaltimetype tt,
87 /* convert tt, a time in UTC, into a time in timezone tzid */
88 struct icaltimetype icaltime_as_zone(struct icaltimetype tt,
91 /* Return a null time, which indicates no time has been set. This time represent the beginning of the epoch */
92 struct icaltimetype icaltime_null_time(void);
94 /* Return true of the time is null. */
95 int icaltime_is_null_time(struct icaltimetype t);
97 /* Returns false if the time is clearly invalid, but is not null. This
98 is usually the result of creating a new time type buy not clearing
99 it, or setting one of the flags to an illegal value. */
100 int icaltime_is_valid_time(struct icaltimetype t);
102 /* Reset all of the time components to be in their normal ranges. For
103 instance, given a time with minutes=70, the minutes will be reduces
104 to 10, and the hour incremented. This allows the caller to do
105 arithmetic on times without worrying about overflow or
107 struct icaltimetype icaltime_normalize(struct icaltimetype t);
109 /* Return the day of the year of the given time */
110 short icaltime_day_of_year(struct icaltimetype t);
112 /* Create a new time, given a day of year and a year. */
113 struct icaltimetype icaltime_from_day_of_year(short doy, short year);
115 /* Return the day of the week of the given time. Sunday is 1 */
116 short icaltime_day_of_week(struct icaltimetype t);
118 /* Return the day of the year for the Sunday of the week that the
119 given time is within. */
120 short icaltime_start_doy_of_week(struct icaltimetype t);
122 /* Return a string with the time represented in the same format as ctime(). THe string is owned by libical */
123 char* icaltime_as_ctime(struct icaltimetype);
125 /* Return the week number for the week the given time is within */
126 short icaltime_week_number(struct icaltimetype t);
128 /* Create a new time from a weeknumber and a year. */
129 struct icaltimetype icaltime_from_week_number(short week_number, short year);
131 /* Return -1, 0, or 1 to indicate that a<b, a==b or a>b */
132 int icaltime_compare(struct icaltimetype a,struct icaltimetype b);
134 /* like icaltime_compare, but only use the date parts. */
135 int icaltime_compare_date_only(struct icaltimetype a, struct icaltimetype b);
137 /* Return the number of days in the given month */
138 short icaltime_days_in_month(short month,short year);
141 #endif /* !ICALTIME_H */