aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/libical/icaltimezone.h
blob: 2f6487e1e92cb4f7eec00978afcc48f9b281bf05 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/*======================================================================
 FILE: icaltimezone.h
 CREATOR: Damon Chaplin 15 March 2001


 $Id$
 $Locker$

 (C) COPYRIGHT 2001, Damon Chaplin

 This program is free software; you can redistribute it and/or modify
 it under the terms of either: 

    The LGPL as published by the Free Software Foundation, version
    2.1, available at: http://www.fsf.org/copyleft/lesser.html

  Or:

    The Mozilla Public License Version 1.0. You may obtain a copy of
    the License at http://www.mozilla.org/MPL/


======================================================================*/


#ifndef ICALTIMEZONE_H
#define ICALTIMEZONE_H

#include <stdio.h> /* For FILE* */
#include "icaltime.h"


/* An opaque struct representing a timezone. */
typedef struct _icaltimezone        icaltimezone;



/*
 * Accessing timezones.
 */

/* Returns the array of builtin icaltimezones. */
icalarray* icaltimezone_get_builtin_timezones   (void);

/* Returns a single builtin timezone, given its Olson city name. */
icaltimezone* icaltimezone_get_builtin_timezone (const char *location);

/* Returns the UTC timezone. */
icaltimezone* icaltimezone_get_utc_timezone (void);

/* Returns the TZID of a timezone. */
char*   icaltimezone_get_tzid           (icaltimezone   *zone);

/* Returns the city name of a timezone. */
char*   icaltimezone_get_location       (icaltimezone   *zone);

/* Returns the latitude of a builtin timezone. */
double  icaltimezone_get_latitude       (icaltimezone   *zone);

/* Returns the longitude of a builtin timezone. */
double  icaltimezone_get_longitude      (icaltimezone   *zone);

/* Returns the VTIMEZONE component of a timezone. */
icalcomponent*  icaltimezone_get_component  (icaltimezone   *zone);


/*
 * Converting times between timezones.
 */

void    icaltimezone_convert_time       (struct icaltimetype *tt,
                         icaltimezone   *from_zone,
                         icaltimezone   *to_zone);


/*
 * Getting offsets from UTC.
 */

/* Calculates the UTC offset of a given local time in the given timezone.
   It is the number of seconds to add to UTC to get local time.
   The is_daylight flag is set to 1 if the time is in daylight-savings time. */
int icaltimezone_get_utc_offset     (icaltimezone   *zone,
                         struct icaltimetype *tt,
                         int        *is_daylight);

/* Calculates the UTC offset of a given UTC time in the given timezone.
   It is the number of seconds to add to UTC to get local time.
   The is_daylight flag is set to 1 if the time is in daylight-savings time. */
int icaltimezone_get_utc_offset_of_utc_time (icaltimezone   *zone,
                         struct icaltimetype *tt,
                         int        *is_daylight);




/*
 * Comparing VTIMEZONE components.
 */

/* Compares 2 VTIMEZONE components to see if they match, ignoring their TZIDs.
   It returns 1 if they match, 0 if they don't, or -1 on error. */
int icaltimezone_compare_vtimezone      (icalcomponent  *vtimezone1,
                         icalcomponent  *vtimezone2);




/*
 * Handling arrays of timezones.
 */
icalarray*  icaltimezone_array_new      (void);

void        icaltimezone_array_append_from_vtimezone (icalarray     *timezones,
                              icalcomponent *child);



/*
 * Debugging Output.
 */

/* Dumps information about changes in the timezone up to and including
   max_year. */
int icaltimezone_dump_changes       (icaltimezone   *zone,
                         int         max_year,
                         FILE       *fp);

#endif /* ICALTIMEZONE_H */