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 package net.fortuna.ical4j.util;
35
36 import java.util.Calendar;
37 import java.util.Date;
38 import java.util.TimeZone;
39
40 /***
41 * Utility methods relevant to Java timezones.
42 *
43 * @author benfortuna
44 */
45 public final class TimeZoneUtils {
46
47 /***
48 * Constructor made private to enforce static nature.
49 */
50 private TimeZoneUtils() {
51 }
52
53 /***
54 * Determines the first start date of daylight savings for the specified
55 * timezone since January 1, 1970.
56 *
57 * @param timezone
58 * a timezone to determine the start of daylight savings for
59 * @return a date
60 */
61 public static Date getDaylightStart(final TimeZone timezone) {
62 Calendar calendar = Calendar.getInstance(timezone);
63 calendar.setTime(new Date(0));
64
65
66 while (timezone.inDaylightTime(calendar.getTime())) {
67 calendar.set(Calendar.DAY_OF_YEAR, calendar
68 .get(Calendar.DAY_OF_YEAR) + 1);
69 }
70
71
72 while (!timezone.inDaylightTime(calendar.getTime())) {
73 calendar.set(Calendar.DAY_OF_YEAR, calendar
74 .get(Calendar.DAY_OF_YEAR) + 1);
75 }
76
77 return calendar.getTime();
78 }
79
80 /***
81 * Determines the first end date of daylight savings for the specified
82 * timezone since January 1, 1970.
83 *
84 * @param timezone
85 * a timezone to determine the end of daylight savings for
86 * @return a date
87 */
88 public static Date getDaylightEnd(final TimeZone timezone) {
89 Calendar calendar = Calendar.getInstance(timezone);
90 calendar.setTime(new Date(0));
91
92
93 while (!timezone.inDaylightTime(calendar.getTime())) {
94 calendar.set(Calendar.DAY_OF_YEAR, calendar
95 .get(Calendar.DAY_OF_YEAR) + 1);
96 }
97
98
99 while (timezone.inDaylightTime(calendar.getTime())) {
100 calendar.set(Calendar.DAY_OF_YEAR, calendar
101 .get(Calendar.DAY_OF_YEAR) + 1);
102 }
103
104 return calendar.getTime();
105 }
106 }