/** * {@inheritDoc} */ @Override void setCalendar(final FastDateParser parser, final Calendar cal, final String value) { cal.setTimeZone(FastTimeZone.getGmtTimeZone(value)); }
/** * Gets a TimeZone, looking first for GMT custom ids, then falling back to Olson ids. * A GMT custom id can be 'Z', or 'UTC', or has an optional prefix of GMT, * followed by sign, hours digit(s), optional colon(':'), and optional minutes digits. * i.e. <em>[GMT] (+|-) Hours [[:] Minutes]</em> * * @param id A GMT custom id (or Olson id * @return A timezone */ public static TimeZone getTimeZone(final String id) { final TimeZone tz = getGmtTimeZone(id); if (tz != null) { return tz; } return TimeZone.getTimeZone(id); }
/** * {@inheritDoc} */ @Override void setCalendar(final FastDateParser parser, final Calendar cal, final String timeZone) { final TimeZone tz = FastTimeZone.getGmtTimeZone(timeZone); if (tz != null) { cal.setTimeZone(tz); } else { final String lowerCase = timeZone.toLowerCase(locale); TzInfo tzInfo = tzNames.get(lowerCase); if (tzInfo == null) { // match missing the optional trailing period tzInfo = tzNames.get(lowerCase + '.'); } cal.set(Calendar.DST_OFFSET, tzInfo.dstOffset); cal.set(Calendar.ZONE_OFFSET, tzInfo.zone.getRawOffset()); } } }
@Test public void testHoursColonMinutes() { assertEquals(HOURS_23, FastTimeZone.getGmtTimeZone("23:00").getRawOffset()); assertEquals(HOURS_2, FastTimeZone.getGmtTimeZone("2:00").getRawOffset()); assertEquals(MINUTES_59, FastTimeZone.getGmtTimeZone("00:59").getRawOffset()); assertEquals(MINUTES_5, FastTimeZone.getGmtTimeZone("00:5").getRawOffset()); assertEquals(HOURS_23+MINUTES_59, FastTimeZone.getGmtTimeZone("23:59").getRawOffset()); assertEquals(HOURS_2+MINUTES_5, FastTimeZone.getGmtTimeZone("2:5").getRawOffset()); }
@Test public void testHoursMinutes() { assertEquals(HOURS_23, FastTimeZone.getGmtTimeZone("2300").getRawOffset()); assertEquals(HOURS_2, FastTimeZone.getGmtTimeZone("0200").getRawOffset()); assertEquals(MINUTES_59, FastTimeZone.getGmtTimeZone("0059").getRawOffset()); assertEquals(MINUTES_5, FastTimeZone.getGmtTimeZone("0005").getRawOffset()); assertEquals(HOURS_23+MINUTES_59, FastTimeZone.getGmtTimeZone("2359").getRawOffset()); assertEquals(HOURS_2+MINUTES_5, FastTimeZone.getGmtTimeZone("0205").getRawOffset()); }
@Test public void testSign() { assertEquals(HOURS_23, FastTimeZone.getGmtTimeZone("+23:00").getRawOffset()); assertEquals(HOURS_2, FastTimeZone.getGmtTimeZone("+2:00").getRawOffset()); assertEquals(-HOURS_23, FastTimeZone.getGmtTimeZone("-23:00").getRawOffset()); assertEquals(-HOURS_2, FastTimeZone.getGmtTimeZone("-2:00").getRawOffset()); }
@Test public void testGmtPrefix() { assertEquals(HOURS_23, FastTimeZone.getGmtTimeZone("GMT+23:00").getRawOffset()); assertEquals(-HOURS_23, FastTimeZone.getGmtTimeZone("GMT-23:00").getRawOffset()); }
@BeforeClass public static void classSetUp() { DEFAULT_LOCALE_BEFORE_TEST = Locale.getDefault(); if (!DEFAULT_LOCALE_BEFORE_TEST.equals(Locale.CANADA)) { Locale.setDefault(Locale.CANADA); } else { // you seem to be from Canada... Locale.setDefault(Locale.CHINESE); } TEST_DEFAULT_LOCALE = Locale.getDefault(); DEFAULT_TIMEZONE_BEFORE_TEST = TimeZone.getDefault(); final TimeZone utc = FastTimeZone.getGmtTimeZone(); if (!DEFAULT_TIMEZONE_BEFORE_TEST.equals(utc)) { TimeZone.setDefault(utc); } else { TimeZone.setDefault(TimeZone.getTimeZone("GMT")); } TEST_DEFAULT_TIMEZONE = TimeZone.getDefault(); }
@Test public void testGetGmtTimeZone() { assertEquals(0, FastTimeZone.getGmtTimeZone().getRawOffset()); }
private void testUTC(final String expectedValue, final String pattern) { final TimeZone timeZone = FastTimeZone.getGmtTimeZone(); assertFormats(expectedValue, pattern, timeZone, createFebruaryTestDate(timeZone)); }
@Test public void testFormat() { final Calendar c = Calendar.getInstance(FastTimeZone.getGmtTimeZone()); c.set(2005, Calendar.JANUARY, 1, 12, 0, 0); c.setTimeZone(TimeZone.getDefault()); final StringBuilder buffer = new StringBuilder (); final int year = c.get(Calendar.YEAR); final int month = c.get(Calendar.MONTH) + 1; final int day = c.get(Calendar.DAY_OF_MONTH); final int hour = c.get(Calendar.HOUR_OF_DAY); buffer.append (year); buffer.append(month); buffer.append(day); buffer.append(hour); assertEquals(buffer.toString(), DateFormatUtils.format(c.getTime(), "yyyyMdH")); assertEquals(buffer.toString(), DateFormatUtils.format(c.getTime().getTime(), "yyyyMdH")); assertEquals(buffer.toString(), DateFormatUtils.format(c.getTime(), "yyyyMdH", Locale.US)); assertEquals(buffer.toString(), DateFormatUtils.format(c.getTime().getTime(), "yyyyMdH", Locale.US)); }
@Test public void testZeroOffsetsReturnSingleton() { assertEquals(FastTimeZone.getGmtTimeZone(), FastTimeZone.getTimeZone("+0")); assertEquals(FastTimeZone.getGmtTimeZone(), FastTimeZone.getTimeZone("-0")); }
@Test public void testFormatCalendar() { final Calendar c = Calendar.getInstance(FastTimeZone.getGmtTimeZone()); c.set(2005, Calendar.JANUARY, 1, 12, 0, 0); c.setTimeZone(TimeZone.getDefault()); final StringBuilder buffer = new StringBuilder (); final int year = c.get(Calendar.YEAR); final int month = c.get(Calendar.MONTH) + 1; final int day = c.get(Calendar.DAY_OF_MONTH); final int hour = c.get(Calendar.HOUR_OF_DAY); buffer.append (year); buffer.append(month); buffer.append(day); buffer.append(hour); assertEquals(buffer.toString(), DateFormatUtils.format(c, "yyyyMdH")); assertEquals(buffer.toString(), DateFormatUtils.format(c.getTime(), "yyyyMdH")); assertEquals(buffer.toString(), DateFormatUtils.format(c, "yyyyMdH", Locale.US)); assertEquals(buffer.toString(), DateFormatUtils.format(c.getTime(), "yyyyMdH", Locale.US)); }
@Test public void testUTC() { assertEquals(FastTimeZone.getGmtTimeZone(), FastTimeZone.getTimeZone("UTC")); }
@Test public void testBareGmt() { assertEquals(FastTimeZone.getGmtTimeZone(), FastTimeZone.getTimeZone("GMT")); }
@Test public void testZ() { assertEquals(FastTimeZone.getGmtTimeZone(), FastTimeZone.getTimeZone("Z")); }
@Test public void testFormatUTC() { final Calendar c = Calendar.getInstance(FastTimeZone.getGmtTimeZone()); c.set(2005, Calendar.JANUARY, 1, 12, 0, 0); assertEquals ("2005-01-01T12:00:00", DateFormatUtils.formatUTC(c.getTime(), DateFormatUtils.ISO_DATETIME_FORMAT.getPattern())); assertEquals ("2005-01-01T12:00:00", DateFormatUtils.formatUTC(c.getTime().getTime(), DateFormatUtils.ISO_DATETIME_FORMAT.getPattern())); assertEquals ("2005-01-01T12:00:00", DateFormatUtils.formatUTC(c.getTime(), DateFormatUtils.ISO_DATETIME_FORMAT.getPattern(), Locale.US)); assertEquals ("2005-01-01T12:00:00", DateFormatUtils.formatUTC(c.getTime().getTime(), DateFormatUtils.ISO_DATETIME_FORMAT.getPattern(), Locale.US)); }
@Test public void testLANG_1152() { final TimeZone utc = FastTimeZone.getGmtTimeZone(); final Date date = new Date(Long.MAX_VALUE); String dateAsString = FastDateFormat.getInstance("yyyy-MM-dd", utc, Locale.US).format(date); assertEquals("292278994-08-17", dateAsString); dateAsString = FastDateFormat.getInstance("dd/MM/yyyy", utc, Locale.US).format(date); assertEquals("17/08/292278994", dateAsString); }
@SystemDefaults(locale="en") @Test public void testSMTP() { TimeZone timeZone = TimeZone.getTimeZone("GMT-3"); Calendar june = createJuneTestDate(timeZone); assertFormats("Sun, 08 Jun 2003 10:11:12 -0300", DateFormatUtils.SMTP_DATETIME_FORMAT.getPattern(), timeZone, june); timeZone = FastTimeZone.getGmtTimeZone(); june = createJuneTestDate(timeZone); assertFormats("Sun, 08 Jun 2003 10:11:12 +0000", DateFormatUtils.SMTP_DATETIME_FORMAT.getPattern(), timeZone, june); }
@SystemDefaults(timezone="UTC") @Test public void testTimeZoneAsZ() throws Exception { final Calendar c = Calendar.getInstance(FastTimeZone.getGmtTimeZone()); final FastDateFormat noColonFormat = FastDateFormat.getInstance("Z"); assertEquals("+0000", noColonFormat.format(c)); final FastDateFormat isoFormat = FastDateFormat.getInstance("ZZ"); assertEquals("Z", isoFormat.format(c)); final FastDateFormat colonFormat = FastDateFormat.getInstance("ZZZ"); assertEquals("+00:00", colonFormat.format(c)); }