aboutsummaryrefslogtreecommitdiffstats
path: root/libical/src/libical/icaltimezone.h
blob: 028fd8c10ac648badffe15e26eeb83414c358d37 (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
/* -*- 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 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 */