1 package jodd.datetime; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 import java.util.GregorianCalendar; 6 7 import junit.framework.TestCase; 8 9 public class TestJDateTime extends TestCase { 10 11 public void testSetGetMillis() { 12 JDateTime jdt = new JDateTime(2003, 2, 28, 23, 59, 59.000); 13 14 for (int i = 0; i < 1000; i++) { 15 jdt.setMillisecond(i); 16 assertEquals(i, jdt.getMillisecond()); 17 } 18 } 19 20 21 public void testSet999Millis() { 22 23 JDateTime jdt = new JDateTime(); 24 25 jdt.set(2003, 2, 28, 23, 59, 59.999); 26 assertEquals("2003-02-28 23:59:59.999", jdt.toString()); 27 28 jdt.set(2003, 2, 28, 23, 59, 60.0); 29 assertEquals("2003-03-01 00:00:00.000", jdt.toString()); 30 31 jdt.set(2003, 2, 28, 23, 59, 59.999999); assertEquals("2003-02-28 23:59:59.999", jdt.toString()); 34 35 jdt.set(2003, 2, 28, 23, 59, 59.999999999999); assertEquals("2003-02-28 23:59:59.999", jdt.toString()); 38 39 jdt.set(2003, 2, 28, 23, 59, 59.9999999999999); assertEquals("2003-02-28 23:59:59.999", jdt.toString()); 41 42 jdt.set(2003, 2, 28, 23, 59, 59.99999999999999); assertEquals("2003-02-28 23:59:59.999", jdt.toString()); 44 45 jdt.set(2003, 2, 28, 23, 59, 59.999999999999999); assertEquals("2003-03-01 00:00:00.000", jdt.toString()); 47 } 48 49 50 public void testDaysInMonth() { 51 JDateTime jdt = new JDateTime(2003, 1, 1); 52 assertEquals(31, jdt.getMonthLength()); 53 assertEquals(28, jdt.getMonthLength(2)); 54 55 jdt = new JDateTime(2000, 1, 1); 56 assertEquals(31, jdt.getMonthLength()); 57 assertEquals(29, jdt.getMonthLength(2)); 58 } 59 60 61 public void testToString() { 62 63 JDateTime jdt = new JDateTime(2003, 1, 1, 01, 01, 01.001); 64 assertEquals("2003-01-01 01:01:01.001", jdt.toString()); 65 66 jdt.set(200, 10, 10, 10, 10, 10.012); 67 assertEquals("200-10-10 10:10:10.012", jdt.toString()); 68 69 jdt.set(2003, 10, 10, 10, 10, 10.123); 70 assertEquals("2003-10-10 10:10:10.123", jdt.toString()); 71 } 72 73 public void testAddMonths() { 74 JDateTime gt = new JDateTime(2003, 1, 31); 75 gt.setMonthFix(false); 76 gt.addMonth(1); 77 assertEquals("2003-03-03 00:00:00.000", gt.toString()); 78 79 gt.setDate(2003, 1, 31); 80 gt.addMonth(1, true); 81 assertEquals("2003-02-28 00:00:00.000", gt.toString()); 82 83 gt.setDate(2004, 1, 31); 84 gt.addMonth(1); 85 assertEquals("2004-03-02 00:00:00.000", gt.toString()); 86 87 gt.setDate(2004, 1, 31); 88 gt.addMonth(1, true); 89 assertEquals("2004-02-29 00:00:00.000", gt.toString()); 90 91 gt.setDate(2003, 1, 25); 92 gt.add(0, 1, 6, true); 93 assertEquals("2003-02-28 00:00:00.000", gt.toString()); 94 95 gt.setDate(2003, 1, 20); 96 gt.add(0, 10, 11, true); 97 assertEquals("2003-11-30 00:00:00.000", gt.toString()); 98 99 gt.setDate(2004, 2, 29); 100 gt.addYear(1, true); 101 assertEquals("2005-02-28 00:00:00.000", gt.toString()); 102 103 104 105 gt.setDate(2004, 2, 29); 106 gt.addYear(-1, true); 107 assertEquals("2003-02-28 00:00:00.000", gt.toString()); 108 109 gt.setDate(2003, 11, 31); gt.add(0, -8, -31, true); 111 assertEquals("2003-02-28 00:00:00.000", gt.toString()); 112 gt.setDate(2003, 11, 31); 113 gt.add(0, -8, -31, false); 114 assertEquals("2003-03-01 00:00:00.000", gt.toString()); 115 116 gt.setDate(2004, 5, 31); 117 gt.addMonth(-3, true); 118 assertEquals("2004-02-29 00:00:00.000", gt.toString()); 119 gt.setDate(2003, 11, 31); 120 gt.addMonth(-10, true); 121 assertEquals("2003-02-01 00:00:00.000", gt.toString()); 122 123 } 124 125 126 public void testMiscSetsGets() { 127 JDateTime gt = new JDateTime(2003, 11, 26, 21, 8, 25.173); 128 129 gt.setYear(2002); 130 assertEquals(2002, gt.getYear()); 131 132 gt.setMonth(10); 133 assertEquals(10, gt.getMonth()); 134 135 gt.setDay(27); 136 assertEquals(27, gt.getDay()); 137 138 gt.setHour(22); 139 assertEquals(22, gt.getHour()); 140 141 gt.setMinute(8); 142 assertEquals(8, gt.getMinute()); 143 144 gt.setSecond(24); 145 assertEquals(24, (int)gt.getSecond()); 146 assertEquals(24.173, gt.getSecond(), 0.0005); 147 148 gt.setSecond(25.371); 149 assertEquals(25.371, gt.getSecond(), 0.0005); 150 151 gt.setMillisecond(173); 152 assertEquals(173, gt.getMillisecond()); 153 154 assertEquals("2002-10-27 22:08:25.173", gt.toString()); 155 156 } 157 158 public void testLeapYears() { 159 160 JDateTime gt = new JDateTime(1984, 02, 29); 161 assertTrue(gt.isLeap()); 162 assertEquals("1984-02-29 00:00:00.000", gt.toString()); 163 164 gt.set(1985, 02, 29); 165 assertFalse(gt.isLeap()); 166 assertEquals("1985-03-01 00:00:00.000", gt.toString()); 167 168 gt.set(2004, 02, 29); 169 assertTrue(gt.isLeap()); 170 assertEquals("2004-02-29 00:00:00.000", gt.toString()); 171 172 gt.set(1900, 02, 29); 173 assertFalse(gt.isLeap()); assertEquals("1900-03-01 00:00:00.000", gt.toString()); 175 176 gt.set(2000, 02, 29); 177 assertTrue(gt.isLeap()); assertEquals("2000-02-29 00:00:00.000", gt.toString()); 179 180 gt.set(1600, 02, 29); 181 assertTrue(gt.isLeap()); assertEquals("1600-02-29 00:00:00.000", gt.toString()); 183 184 for (int y = -4700; y < 5000; y++) { 185 gt.set(y, 02, 29); 186 assertEquals(31 + 29, gt.getDayOfYear()); 187 if (gt.isLeap()) { 188 assertEquals(29, gt.getDay()); 189 } else { 190 assertEquals(01, gt.getDay()); 191 } 192 } 193 } 194 195 196 public void testFormatTemplates() { 197 JDateTime gt = new JDateTime(1975, 01, 01); 198 assertEquals("2442413.5", gt.getJulianDate().toString()); 199 assertEquals("1975-01-01 00:00:00.000", gt.get()); 200 201 gt.setFormatTemplate("YYYY.MM.DD"); 202 assertEquals("1975.01.01", gt.get()); 203 204 JDateTime.setDefaultFormatTemplate("YYYY/MM/DD hh:mm"); 205 assertEquals("1975.01.01", gt.get()); 206 207 gt.resetFormatTemplate(); 208 assertEquals("1975/01/01 00:00", gt.get()); 209 210 assertEquals("01: January (Jan)", gt.get("MM: MML (MMS)")); 211 assertEquals("01 is 3: Wednesday (Wed)", gt.get("DD is D: DL (DS)")); 212 213 gt.addDay(27); 214 assertEquals("028 / 05 / W05", gt.get("DDD / WW / WWW")); 215 216 JDateTime.resetDefaultFormatTemplate(); 217 } 218 219 220 221 public void testGetQuotes() { 222 JDateTime jdt = new JDateTime(1968, 9, 30); 223 assertEquals("SHE WAS B'O'R'N ON 30 September 1968", jdt.get("SHE 'WAS' 'B''O''R''N' ON DD MML YYYY")); 224 assertEquals("5 is a week number and W is letter", jdt.get("W is a week number and 'W is letter")); 225 } 226 227 228 229 230 public void testSetFromString() { 231 JDateTime gt = new JDateTime(); 232 gt.set("2003-11-24 23:18:38.173"); 233 assertEquals("2003-11-24 23:18:38.173", gt.get()); 234 235 gt.set("2003-11-23"); 236 assertEquals("2003-11-23 00:00:00.000", gt.get()); 237 238 gt.set("2003-14-23"); 239 assertEquals("2004-02-23 00:00:00.000", gt.get()); 240 241 gt.set("2003-4-3"); 242 assertEquals("2003-04-03 00:00:00.000", gt.get()); 243 244 gt.set("2003-4-x"); 245 assertEquals("2003-04-03 00:00:00.000", gt.get()); 247 gt.set("2003-11-23 13:67"); 248 assertEquals("2003-11-23 14:07:00.000", gt.get()); 249 250 gt.set("2003-11-23 13:07:55"); 251 assertEquals("2003-11-23 13:07:55.000", gt.get()); 252 253 gt.set("2003-11-23 13:07:5"); 254 assertEquals("2003-11-23 13:07:05.000", gt.get()); 255 256 gt.set("123456-7-8"); 257 assertEquals("123456-07-08 00:00:00.000", gt.get()); 258 259 gt.set("2003-11-23"); 260 assertEquals("2003-11-23 00:00:00.000", gt.get()); 261 } 262 263 public void testLoadFromStoreTo() { 264 Calendar c = Calendar.getInstance(); 265 c.set(2001, 00, 01, 02, 03, 04); 266 c.set(Calendar.MILLISECOND, 500); 267 JDateTime gt = new JDateTime(); 268 gt.loadFrom(c); 269 assertEquals("2001-01-01 02:03:04.500", gt.toString()); 270 Calendar c1 = gt.getCalendarInstance(); 271 assertEquals(2001, c1.get(Calendar.YEAR)); 272 assertEquals(0, c1.get(Calendar.MONTH)); 273 assertEquals(1, c1.get(Calendar.DAY_OF_MONTH)); 274 assertEquals(2, c1.get(Calendar.HOUR_OF_DAY)); 275 assertEquals(3, c1.get(Calendar.MINUTE)); 276 assertEquals(4, c1.get(Calendar.SECOND)); 277 assertEquals(500, c1.get(Calendar.MILLISECOND)); 278 279 280 GregorianCalendar gc = new GregorianCalendar(2002, 05, 02, 03, 04, 05); 281 gc.set(GregorianCalendar.MILLISECOND, 600); 282 gt.loadFrom(gc); 283 assertEquals("2002-06-02 03:04:05.600", gt.toString()); 284 GregorianCalendar gc1 = new GregorianCalendar(); 285 gt.storeTo(gc1); 286 assertEquals(2002, gc1.get(GregorianCalendar.YEAR)); 287 assertEquals(5, gc1.get(GregorianCalendar.MONTH)); 288 assertEquals(2, gc1.get(GregorianCalendar.DAY_OF_MONTH)); 289 assertEquals(3, gc1.get(GregorianCalendar.HOUR_OF_DAY)); 290 assertEquals(4, gc1.get(GregorianCalendar.MINUTE)); 291 assertEquals(5, gc1.get(GregorianCalendar.SECOND)); 292 assertEquals(600, gc1.get(GregorianCalendar.MILLISECOND)); 293 294 295 Date d = new Date(101, 2, 3, 4, 5, 6); 296 gt.loadFrom(d); 297 assertEquals("2001-03-03 04:05:06.000", gt.toString()); 298 Date d2 = gt.getDateInstance(); 299 assertEquals(101, d2.getYear()); 300 assertEquals(2, d2.getMonth()); 301 assertEquals(3, d2.getDate()); 302 assertEquals(4, d2.getHours()); 303 assertEquals(5, d2.getMinutes()); 304 assertEquals(6, d2.getSeconds()); 305 306 307 JDateTime gt_new = new JDateTime(2003, 6, 5, 4, 3, 2.1); 308 gt.loadFrom(gt_new); 309 assertEquals("2003-06-05 04:03:02.100", gt.toString()); 310 JDateTime gt2 = (JDateTime) gt.getInstance(JDateTime.class); 311 assertEquals(2003, gt2.getYear()); 312 assertEquals(6, gt2.getMonth()); 313 assertEquals(5, gt2.getDay()); 314 assertEquals(4, gt2.getHour()); 315 assertEquals(3, gt2.getMinute()); 316 assertEquals(2, (int)gt2.getSecond()); 317 assertEquals(100, gt2.getMillisecond()); 318 319 320 java.sql.Date sd = new java.sql.Date(123, 4, 5); 321 gt.loadFrom(sd); 322 assertEquals("2023-05-05 00:00:00.000", gt.toString()); 323 java.sql.Date sd2 = new java.sql.Date(1, 2, 3); 324 gt.storeTo(sd2); 325 assertEquals(123, sd2.getYear()); 326 assertEquals(4, sd2.getMonth()); 327 assertEquals(5, sd2.getDate()); 328 329 330 java.sql.Timestamp st = new java.sql.Timestamp(123, 4, 5, 6, 7, 8, 500000000); 331 gt.loadFrom(st); 332 assertEquals("2023-05-05 06:07:08.500", gt.toString()); 333 java.sql.Timestamp st2 = gt.getSqlTimestampInstance(); 334 assertEquals(123, st2.getYear()); 335 assertEquals(4, st2.getMonth()); 336 assertEquals(5, st2.getDate()); 337 assertEquals(6, st2.getHours()); 338 assertEquals(7, st2.getMinutes()); 339 assertEquals(8, st2.getSeconds()); 340 assertEquals(500, st2.getNanos()/1000000); 341 } 342 343 } 344 | Popular Tags |