assertEquals("2009-10-20T30:40:50S", dt.toString());
}
@Test
public void testToUtc() throws DateTimeException {
DateTime dt = new DateTime();
DateTime dtExp = new DateTime();
// 2009-06-14T12:30:30W --> 2009-06-14T12:30:29U
dt.setYear(2009);
dt.setMonth(6);
dt.setDay(14);
dt.setHour(12);
dt.setMinute(30);
dt.setSecond(30);
dt.setType(DateTime.Type.WALL);
dt.toUtc(0, 61);
dtExp.setYear(2009);
dtExp.setMonth(6);
dtExp.setDay(14);
dtExp.setHour(12);
dtExp.setMinute(29);
dtExp.setSecond(29);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 2009-06-30T23:59:59W --> 2009-07-01T00:00:00U
dt.setYear(2009);
dt.setMonth(6);
dt.setDay(30);
dt.setHour(23);
dt.setMinute(59);
dt.setSecond(59);
dt.setType(DateTime.Type.WALL);
dt.toUtc(0, -1);
dtExp.setYear(2009);
dtExp.setMonth(7);
dtExp.setDay(1);
dtExp.setHour(0);
dtExp.setMinute(0);
dtExp.setSecond(0);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 2009-03-01T00:00:00W --> 2009-02-28T23:59:59Z
dt.setYear(2009);
dt.setMonth(3);
dt.setDay(1);
dt.setHour(0);
dt.setMinute(0);
dt.setSecond(0);
dt.setType(DateTime.Type.WALL);
dt.toUtc(0, 1);
dtExp.setYear(2009);
dtExp.setMonth(2);
dtExp.setDay(28);
dtExp.setHour(23);
dtExp.setMinute(59);
dtExp.setSecond(59);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 2008-03-01T00:00:00W --> 2008-02-28T23:59:59Z
dt.setYear(2008);
dt.setMonth(3);
dt.setDay(1);
dt.setHour(0);
dt.setMinute(0);
dt.setSecond(0);
dt.setType(DateTime.Type.WALL);
dt.toUtc(0, 1);
dtExp.setYear(2008);
dtExp.setMonth(2);
dtExp.setDay(29);
dtExp.setHour(23);
dtExp.setMinute(59);
dtExp.setSecond(59);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 2000-03-01T00:00:00W --> 2000-02-28T23:59:59Z
dt.setYear(2000);
dt.setMonth(3);
dt.setDay(1);
dt.setHour(0);
dt.setMinute(0);
dt.setSecond(0);
dt.setType(DateTime.Type.WALL);
dt.toUtc(0, 1);
dtExp.setYear(2000);
dtExp.setMonth(2);
dtExp.setDay(29);
dtExp.setHour(23);
dtExp.setMinute(59);
dtExp.setSecond(59);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 1900-03-01T00:00:00W --> 1900-02-28T23:59:59Z
dt.setYear(1900);
dt.setMonth(3);
dt.setDay(1);
dt.setHour(0);
dt.setMinute(0);
dt.setSecond(0);
dt.setType(DateTime.Type.WALL);
dt.toUtc(0, 1);
dtExp.setYear(1900);
dtExp.setMonth(2);
dtExp.setDay(28);
dtExp.setHour(23);
dtExp.setMinute(59);
dtExp.setSecond(59);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 2000-03-30T23:59:59S --> 2000-03-31T00:00:00Z
dt.setYear(2000);
dt.setMonth(3);
dt.setDay(30);
dt.setHour(23);
dt.setMinute(59);
dt.setSecond(59);
dt.setType(DateTime.Type.STD);
dt.toUtc(-1, 0);
dtExp.setYear(2000);
dtExp.setMonth(3);
dtExp.setDay(31);
dtExp.setHour(0);
dtExp.setMinute(0);
dtExp.setSecond(0);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 2000-12-29T12:00:00W --> 2001-01-01T12:00:00Z
dt.setYear(2000);
dt.setMonth(12);
dt.setDay(29);
dt.setHour(12);
dt.setMinute(0);
dt.setSecond(0);
dt.setType(DateTime.Type.STD);
dt.toUtc(-259200, 0);
dtExp.setYear(2001);
dtExp.setMonth(1);
dtExp.setDay(1);
dtExp.setHour(12);
dtExp.setMinute(0);
dtExp.setSecond(0);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
// 2000-01-01T00:00:00W --> 1999-12-12T23:59:59Z
dt.setYear(2000);
dt.setMonth(1);
dt.setDay(1);
dt.setHour(0);
dt.setMinute(0);
dt.setSecond(0);
dt.setType(DateTime.Type.STD);
dt.toUtc(1, 0);
dtExp.setYear(1999);
dtExp.setMonth(12);
dtExp.setDay(31);
dtExp.setHour(23);
dtExp.setMinute(59);
dtExp.setSecond(59);
dtExp.setType(DateTime.Type.UTC);
assertEquals(dtExp, dt);
}