Lines 58-64
Link Here
|
58 |
import junit.framework.TestCase; |
58 |
import junit.framework.TestCase; |
59 |
|
59 |
|
60 |
import java.util.Date; |
60 |
import java.util.Date; |
|
|
61 |
import java.util.Calendar; |
61 |
import java.util.GregorianCalendar; |
62 |
import java.util.GregorianCalendar; |
|
|
63 |
import java.util.TimeZone; |
62 |
|
64 |
|
63 |
/** |
65 |
/** |
64 |
* Class TestHSSFDateUtil |
66 |
* Class TestHSSFDateUtil |
Lines 66-71
Link Here
|
66 |
* |
68 |
* |
67 |
* @author |
69 |
* @author |
68 |
* @author Dan Sherman (dsherman at isisph.com) |
70 |
* @author Dan Sherman (dsherman at isisph.com) |
|
|
71 |
* @author Hack Kampbjorn (hak at 2mba.dk) |
69 |
* @version %I%, %G% |
72 |
* @version %I%, %G% |
70 |
*/ |
73 |
*/ |
71 |
|
74 |
|
Lines 115-118
Link Here
|
115 |
dateIf1904.getTime(), |
118 |
dateIf1904.getTime(), |
116 |
HSSFDateUtil.getJavaDate(excelDate,true).getTime()); |
119 |
HSSFDateUtil.getJavaDate(excelDate,true).getTime()); |
117 |
} |
120 |
} |
|
|
121 |
|
122 |
/** |
123 |
* Checks the conversion of a java.util.date to Excel on a day when |
124 |
* Daylight Saving Time starts. |
125 |
*/ |
126 |
public void testExcelConversionOnDSTStart() { |
127 |
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); |
128 |
TimeZone.setDefault(cet); |
129 |
Calendar cal = new GregorianCalendar(2004, Calendar.MARCH, 28); |
130 |
for (int hour = 0; hour < 24; hour++) { |
131 |
|
132 |
// Skip 02:00 CET as that is the Daylight change time |
133 |
// and Java converts it automatically to 03:00 CEST |
134 |
if (hour == 2) { |
135 |
continue; |
136 |
} |
137 |
|
138 |
cal.set(Calendar.HOUR_OF_DAY, hour); |
139 |
Date javaDate = cal.getTime(); |
140 |
double excelDate = HSSFDateUtil.getExcelDate(javaDate); |
141 |
double difference = excelDate - Math.floor(excelDate); |
142 |
int differenceInHours = (int) (difference * 24 * 60 + 0.5) / 60; |
143 |
assertEquals("Checking " + hour + " hour on Daylight Saving Time start date", |
144 |
hour, |
145 |
differenceInHours); |
146 |
assertEquals("Checking " + hour + " hour on Daylight Saving Time start date", |
147 |
javaDate.getTime(), |
148 |
HSSFDateUtil.getJavaDate(excelDate).getTime()); |
149 |
} |
150 |
} |
151 |
|
152 |
/** |
153 |
* Checks the conversion of an Excel date to a java.util.date on a day when |
154 |
* Daylight Saving Time starts. |
155 |
*/ |
156 |
public void testJavaConversionOnDSTStart() { |
157 |
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); |
158 |
TimeZone.setDefault(cet); |
159 |
Calendar cal = new GregorianCalendar(2004, Calendar.MARCH, 28); |
160 |
double excelDate = HSSFDateUtil.getExcelDate(cal.getTime()); |
161 |
double oneHour = 1.0 / 24; |
162 |
double oneMinute = oneHour / 60; |
163 |
for (int hour = 0; hour < 24; hour++, excelDate += oneHour) { |
164 |
|
165 |
// Skip 02:00 CET as that is the Daylight change time |
166 |
// and Java converts it automatically to 03:00 CEST |
167 |
if (hour == 2) { |
168 |
continue; |
169 |
} |
170 |
|
171 |
cal.set(Calendar.HOUR_OF_DAY, hour); |
172 |
Date javaDate = HSSFDateUtil.getJavaDate(excelDate); |
173 |
assertEquals("Checking " + hour + " hours on Daylight Saving Time start date", |
174 |
excelDate, |
175 |
HSSFDateUtil.getExcelDate(javaDate), oneMinute); |
176 |
} |
177 |
} |
178 |
|
179 |
/** |
180 |
* Checks the conversion of a java.util.Date to Excel on a day when |
181 |
* Daylight Saving Time ends. |
182 |
*/ |
183 |
public void testExcelConversionOnDSTEnd() { |
184 |
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); |
185 |
TimeZone.setDefault(cet); |
186 |
Calendar cal = new GregorianCalendar(2004, Calendar.OCTOBER, 31); |
187 |
for (int hour = 0; hour < 24; hour++) { |
188 |
cal.set(Calendar.HOUR_OF_DAY, hour); |
189 |
Date javaDate = cal.getTime(); |
190 |
double excelDate = HSSFDateUtil.getExcelDate(javaDate); |
191 |
double difference = excelDate - Math.floor(excelDate); |
192 |
int differenceInHours = (int) (difference * 24 * 60 + 0.5) / 60; |
193 |
assertEquals("Checking " + hour + " hour on Daylight Saving Time end date", |
194 |
hour, |
195 |
differenceInHours); |
196 |
assertEquals("Checking " + hour + " hour on Daylight Saving Time start date", |
197 |
javaDate.getTime(), |
198 |
HSSFDateUtil.getJavaDate(excelDate).getTime()); |
199 |
} |
200 |
} |
201 |
|
202 |
/** |
203 |
* Checks the conversion of an Excel date to java.util.Date on a day when |
204 |
* Daylight Saving Time ends. |
205 |
*/ |
206 |
public void testJavaConversionOnDSTEnd() { |
207 |
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen"); |
208 |
TimeZone.setDefault(cet); |
209 |
Calendar cal = new GregorianCalendar(2004, Calendar.OCTOBER, 31); |
210 |
double excelDate = HSSFDateUtil.getExcelDate(cal.getTime()); |
211 |
double oneHour = 1.0 / 24; |
212 |
double oneMinute = oneHour / 60; |
213 |
for (int hour = 0; hour < 24; hour++, excelDate += oneHour) { |
214 |
cal.set(Calendar.HOUR_OF_DAY, hour); |
215 |
Date javaDate = HSSFDateUtil.getJavaDate(excelDate); |
216 |
assertEquals("Checking " + hour + " hours on Daylight Saving Time start date", |
217 |
excelDate, |
218 |
HSSFDateUtil.getExcelDate(javaDate), oneMinute); |
219 |
} |
220 |
} |
221 |
|
222 |
public static void main(String [] args) { |
223 |
System.out |
224 |
.println("Testing org.apache.poi.hssf.usermodel.TestHSSFDateUtil"); |
225 |
junit.textui.TestRunner.run(TestHSSFDateUtil.class); |
226 |
} |
227 |
|
118 |
} |
228 |
} |