Libical API Documentation  3.0
icaltime.h
Go to the documentation of this file.
1 /*======================================================================
2  FILE: icaltime.h
3  CREATOR: eric 02 June 2000
4 
5  (C) COPYRIGHT 2000, Eric Busboom <eric@civicknowledge.com>
6 
7  This library is free software; you can redistribute it and/or modify
8  it under the terms of either:
9 
10  The LGPL as published by the Free Software Foundation, version
11  2.1, available at: https://www.gnu.org/licenses/lgpl-2.1.html
12 
13  Or:
14 
15  The Mozilla Public License Version 2.0. You may obtain a copy of
16  the License at https://www.mozilla.org/MPL/
17 
18  The Original Code is eric. The Initial Developer of the Original
19  Code is Eric Busboom
20 ======================================================================*/
21 
80 #ifndef ICALTIME_H
81 #define ICALTIME_H
82 
83 #include "libical_ical_export.h"
84 
85 #include <time.h>
86 
87 /* An opaque struct representing a timezone. We declare this here to avoid
88  a circular dependency. */
89 #if !defined(ICALTIMEZONE_DEFINED)
90 #define ICALTIMEZONE_DEFINED
91 typedef struct _icaltimezone icaltimezone;
92 #endif
93 
96 {
97  time_t start;
98  time_t end;
99  int is_busy;
100 };
101 
102 typedef struct icaltime_span icaltime_span;
103 
105 {
106  int year;
107  int month;
108  int day;
109  int hour;
110  int minute;
111  int second;
112 
113  int is_date;
118 };
119 
120 typedef struct icaltimetype icaltimetype;
121 
122 #define ICALTIMETYPE_INITIALIZER { 0, 0, 0, 0, 0, 0, 0, 0, 0}
123 
129 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_null_time(void);
130 
135 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_null_date(void);
136 
141 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_current_time_with_zone(const icaltimezone *zone);
142 
147 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_today(void);
148 
172 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_from_timet_with_zone(const time_t tm,
173  const int is_date,
174  const icaltimezone *zone);
175 
185 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_from_string(const char *str);
186 
193 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_from_day_of_year(const int doy, const int year);
194 
205 LIBICAL_ICAL_EXPORT time_t icaltime_as_timet(const struct icaltimetype);
206 
215 LIBICAL_ICAL_EXPORT time_t icaltime_as_timet_with_zone(const struct icaltimetype tt,
216  const icaltimezone *zone);
217 
224 LIBICAL_ICAL_EXPORT const char *icaltime_as_ical_string(const struct icaltimetype tt);
225 
232 LIBICAL_ICAL_EXPORT char *icaltime_as_ical_string_r(const struct icaltimetype tt);
233 
235 LIBICAL_ICAL_EXPORT const icaltimezone *icaltime_get_timezone(const struct icaltimetype t);
236 
238 LIBICAL_ICAL_EXPORT const char *icaltime_get_tzid(const struct icaltimetype t);
239 
254 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_set_timezone(struct icaltimetype *t,
255  const icaltimezone *zone);
256 
260 LIBICAL_ICAL_EXPORT int icaltime_day_of_year(const struct icaltimetype t);
261 
266 LIBICAL_ICAL_EXPORT int icaltime_day_of_week(const struct icaltimetype t);
267 
276 LIBICAL_ICAL_EXPORT int icaltime_start_doy_week(const struct icaltimetype t, int fdow);
277 
283 LIBICAL_ICAL_EXPORT int icaltime_week_number(const struct icaltimetype t);
284 
286 LIBICAL_ICAL_EXPORT int icaltime_is_null_time(const struct icaltimetype t);
287 
294 LIBICAL_ICAL_EXPORT int icaltime_is_valid_time(const struct icaltimetype t);
295 
301 LIBICAL_ICAL_EXPORT int icaltime_is_date(const struct icaltimetype t);
302 
307 LIBICAL_ICAL_EXPORT int icaltime_is_utc(const struct icaltimetype t);
308 
315 LIBICAL_ICAL_EXPORT int icaltime_compare(const struct icaltimetype a, const struct icaltimetype b);
316 
322 LIBICAL_ICAL_EXPORT int icaltime_compare_date_only(const struct icaltimetype a,
323  const struct icaltimetype b);
324 
331 LIBICAL_ICAL_EXPORT int icaltime_compare_date_only_tz(const struct icaltimetype a,
332  const struct icaltimetype b,
333  icaltimezone *tz);
334 
345 LIBICAL_ICAL_EXPORT void icaltime_adjust(struct icaltimetype *tt,
346  const int days, const int hours,
347  const int minutes, const int seconds);
348 
358 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_normalize(const struct icaltimetype tt);
359 
377 LIBICAL_ICAL_EXPORT struct icaltimetype icaltime_convert_to_zone(const struct icaltimetype tt,
378  icaltimezone *zone);
379 
381 LIBICAL_ICAL_EXPORT int icaltime_days_in_month(const int month, const int year);
382 
388 LIBICAL_ICAL_EXPORT int icaltime_is_leap_year(const int year);
389 
391 LIBICAL_ICAL_EXPORT int icaltime_days_in_year(const int year);
392 
402 LIBICAL_ICAL_EXPORT struct icaltime_span icaltime_span_new(struct icaltimetype dtstart,
403  struct icaltimetype dtend, int is_busy);
404 
418 LIBICAL_ICAL_EXPORT int icaltime_span_overlaps(icaltime_span *s1, icaltime_span *s2);
419 
428 LIBICAL_ICAL_EXPORT int icaltime_span_contains(icaltime_span *s, icaltime_span *container);
429 
430 #endif /* !ICALTIME_H */
int is_date
Definition: icaltime.h:113
int icaltime_is_null_time(const struct icaltimetype t)
Returns true if the time is null.
Definition: icaltime.c:639
int icaltime_compare_date_only(const struct icaltimetype a, const struct icaltimetype b)
Like icaltime_compare, but only use the date parts.
Definition: icaltime.c:703
int icaltime_day_of_week(const struct icaltimetype t)
Returns the day of the week of the given time.
Definition: icaltime.c:486
struct icaltimetype icaltime_convert_to_zone(const struct icaltimetype tt, icaltimezone *zone)
Converts time to a given timezone.
Definition: icaltime.c:855
struct icaltime_span icaltime_span_new(struct icaltimetype dtstart, struct icaltimetype dtend, int is_busy)
Builds an icaltimespan given a start time, end time and busy value.
Definition: icaltime.c:914
struct icaltimetype icaltime_normalize(const struct icaltimetype tt)
Normalizes the icaltime, so all of the time components are in their normal ranges.
Definition: icaltime.c:356
Definition: icaltime.h:95
int icaltime_is_date(const struct icaltimetype t)
Returns true if time is a DATE.
Definition: icaltime.c:629
time_t start
Definition: icaltime.h:97
struct icaltimetype icaltime_from_day_of_year(const int doy, const int year)
Constructor.
Definition: icaltime.c:554
time_t icaltime_as_timet_with_zone(const struct icaltimetype tt, const icaltimezone *zone)
Returns the time as seconds past the UNIX epoch, using the given timezone.
Definition: icaltime.c:287
int year
Definition: icaltime.h:106
struct icaltimetype icaltime_from_timet_with_zone(const time_t tm, const int is_date, const icaltimezone *zone)
Constructor.
Definition: icaltime.c:206
struct icaltimetype icaltime_today(void)
Convenience constructor.
Definition: icaltime.c:250
void icaltime_adjust(struct icaltimetype *tt, const int days, const int hours, const int minutes, const int seconds)
Internal, shouldn't be part of the public API.
Definition: icaltime.c:770
const icaltimezone * zone
Definition: icaltime.h:117
int icaltime_is_leap_year(const int year)
Returns whether the specified year is a leap year.
Definition: icaltime.c:440
int icaltime_days_in_month(const int month, const int year)
Definition: icaltime.c:460
int icaltime_compare(const struct icaltimetype a, const struct icaltimetype b)
Returns -1, 0, or 1 to indicate that a is less than b, a equals b, or a is greater than b...
Definition: icaltime.c:648
time_t icaltime_as_timet(const struct icaltimetype)
Definition: icaltime.c:255
struct icaltimetype icaltime_current_time_with_zone(const icaltimezone *zone)
Convenience constructor.
Definition: icaltime.c:245
int is_busy
Definition: icaltime.h:99
int icaltime_span_overlaps(icaltime_span *s1, icaltime_span *s2)
Returns true if the two spans overlap.
Definition: icaltime.c:931
time_t end
Definition: icaltime.h:98
int icaltime_is_valid_time(const struct icaltimetype t)
Returns false if the time is clearly invalid, but is not null.
Definition: icaltime.c:617
int month
Definition: icaltime.h:107
struct icaltimetype icaltime_from_string(const char *str)
Constructor.
Definition: icaltime.c:364
const char * icaltime_get_tzid(const struct icaltimetype t)
Returns the tzid, or NULL for a floating time.
Definition: icaltime.c:889
Definition: icaltime.h:104
struct icaltimetype icaltime_null_time(void)
Constructor.
Definition: icaltime.c:589
struct icaltimetype icaltime_set_timezone(struct icaltimetype *t, const icaltimezone *zone)
Sets the timezone.
Definition: icaltime.c:898
const icaltimezone * icaltime_get_timezone(const struct icaltimetype t)
Returns the timezone.
Definition: icaltime.c:884
int icaltime_day_of_year(const struct icaltimetype t)
Returns the day of the year, counting from 1 (Jan 1st).
Definition: icaltime.c:547
Definition: icaltimezoneimpl.h:22
int icaltime_days_in_year(const int year)
Definition: icaltime.c:449
int icaltime_span_contains(icaltime_span *s, icaltime_span *container)
Returns true if the span is totally within the containing span.
Definition: icaltime.c:955
char * icaltime_as_ical_string_r(const struct icaltimetype tt)
Returns a string representation of the time, in RFC5545 format.
Definition: icaltime.c:334
int icaltime_start_doy_week(const struct icaltimetype t, int fdow)
Returns the day of the year for the first day of the week that the given time is within.
Definition: icaltime.c:504
int icaltime_compare_date_only_tz(const struct icaltimetype a, const struct icaltimetype b, icaltimezone *tz)
Like icaltime_compare, but only use the date parts; accepts timezone.
Definition: icaltime.c:733
struct icaltimetype icaltime_null_date(void)
Constructor.
Definition: icaltime.c:598
int icaltime_is_utc(const struct icaltimetype t)
Returns true if the time is relative to UTC zone.
Definition: icaltime.c:634
int is_daylight
Definition: icaltime.h:115
int icaltime_week_number(const struct icaltimetype t)
Returns the week number for the week the given time is within.
Definition: icaltime.c:528
const char * icaltime_as_ical_string(const struct icaltimetype tt)
Returns a string representation of the time, in RFC5545 format.
Definition: icaltime.c:325