@Override public String toString() { return String.format( "%04d-%02d-%02d", //$NON-NLS-1$ getYear(), getMonth(), getDay()); }
@Override Object extract(DateOption holder) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, holder.get().getYear()); calendar.set(Calendar.MONTH, holder.get().getMonth() - 1); calendar.set(Calendar.DATE, holder.get().getDay()); return calendar; } });
@SuppressWarnings("deprecation") @Override protected Timestamp toTimestamp(ValueOption<?> object) { Date value = ((DateOption) object).get(); return new Timestamp( value.getYear() - 1900, value.getMonth() - 1, value.getDay(), 0, 0, 0, 0); } }
/** * Returns the month of this date. * @return the month (1-12) */ public int getMonth() { int year = getYear(); int dayInYear = elapsedDays - DateUtil.getDayFromYear(year); return DateUtil.getMonthOfYear(dayInYear, DateUtil.isLeap(year)); }
/** * Returns the day of this date. * @return the day (1-31) */ public int getDay() { int year = getYear(); int dayInYear = elapsedDays - DateUtil.getDayFromYear(year); return DateUtil.getDayOfMonth(dayInYear, DateUtil.isLeap(year)); }
@Override public java.sql.Date getPrimitiveJavaObject(Object o) { DateOption object = (DateOption) o; if (object == null || object.isNull()) { return null; } Date value = object.get(); // FIXME for optimization @SuppressWarnings("deprecation") java.sql.Date result = new java.sql.Date(value.getYear() - 1900, value.getMonth() - 1, value.getDay()); return result; }
/** * parses standard date string. */ @Test public void parse_standard() { Date date = Date.valueOf("1234-01-02", Date.Format.STANDARD); assertThat(date.getYear(), is(1234)); assertThat(date.getMonth(), is(1)); assertThat(date.getDay(), is(2)); }
/** * parse long-term future date. */ @Test public void parse_big() { Date date = Date.valueOf("29991231", Date.Format.SIMPLE); assertThat(date.getYear(), is(2999)); assertThat(date.getMonth(), is(12)); assertThat(date.getDay(), is(31)); }
void checkCalendar(int start, int end) { GregorianCalendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT")); calendar.clear(); calendar.set(Calendar.YEAR, start); calendar.set(Calendar.MONTH, Calendar.JANUARY); calendar.set(Calendar.DATE, 1); Date date = new Date(); date.setElapsedDays(DateUtil.getDayFromDate(start, 1, 1)); while (calendar.get(Calendar.YEAR) <= end) { String calString = calendar.toString(); assertThat( "Year: " + calString, date.getYear(), is(calendar.get(Calendar.YEAR))); assertThat( "Month: " + calString, date.getMonth(), is(calendar.get(Calendar.MONTH) + 1)); assertThat( "Date: " + calString, date.getDay(), is(calendar.get(Calendar.DATE))); calendar.add(Calendar.DATE, 1); date.setElapsedDays(date.getElapsedDays() + 1); } } }
/** * parse simple. */ @Test public void parse() { Date date = Date.valueOf("12340102", Date.Format.SIMPLE); assertThat(date.getYear(), is(1234)); assertThat(date.getMonth(), is(1)); assertThat(date.getDay(), is(2)); }
/** * parse the epoch date. */ @Test public void parse_zero() { Date date = Date.valueOf("00010101", Date.Format.SIMPLE); assertThat(date.getYear(), is(1)); assertThat(date.getMonth(), is(1)); assertThat(date.getDay(), is(1)); }
/** * parse w/ option value. */ @Test public void parse_option() { StringOption option = new StringOption("20100615"); Date date = Date.valueOf(option, Date.Format.SIMPLE); assertThat(date.getYear(), is(2010)); assertThat(date.getMonth(), is(6)); assertThat(date.getDay(), is(15)); }