package org.springside.modules.utils.time; import static org.assertj.core.api.Assertions.*; import java.util.Date; import org.junit.Test; public class DateUtilTest { @Test public void isSameDay() { Date date1 = new Date(106, 10, 1); Date date2 = new Date(106, 10, 1, 12, 23, 44); assertThat(DateUtil.isSameDay(date1, date2)).isTrue(); Date date3 = new Date(106, 10, 1); assertThat(DateUtil.isSameTime(date1, date3)).isTrue(); Date date5 = new Date(106, 10, 2); assertThat(DateUtil.isSameTime(date1, date5)).isFalse(); Date date4 = new Date(106, 10, 1, 12, 23, 43); assertThat(DateUtil.isBetween(date3, date1, date2)).isTrue(); assertThat(DateUtil.isBetween(date4, date1, date2)).isTrue(); try { DateUtil.isBetween(null, date1, date2); fail("should fail before"); } catch (Exception e) { } try { DateUtil.isBetween(date3, date2, date1); fail("should fail before"); } catch (Exception e) { } assertThat(DateUtil.isBetween(date5, date1, date2)).isFalse(); } @Test public void truncateAndCelling() { // Sat Jan 21 12:12:12 CST 2017 Date date = new Date(117, 0, 21, 12, 12, 12); Date beginYear = new Date(117, 0, 1, 0, 0, 0); Date endYear = new Date(new Date(117, 11, 31, 23, 59, 59).getTime() + 999); Date nextYear = new Date(118, 0, 1, 0, 0, 0); Date beginMonth = new Date(117, 0, 1); Date endMonth = new Date(new Date(117, 0, 31, 23, 59, 59).getTime() + 999); Date nextMonth = new Date(117, 1, 1); Date beginWeek = new Date(117, 0, 16); Date endWeek = new Date(new Date(117, 0, 22, 23, 59, 59).getTime() + 999); Date nextWeek = new Date(117, 0, 23); Date beginDate = new Date(117, 0, 21); Date endDate = new Date(new Date(117, 0, 21, 23, 59, 59).getTime() + 999); Date nextDate = new Date(117, 0, 22); Date beginHour = new Date(117, 0, 21, 12, 0, 0); Date endHour = new Date(new Date(117, 0, 21, 12, 59, 59).getTime() + 999); Date nextHour = new Date(117, 0, 21, 13, 0, 0); Date beginMinute = new Date(117, 0, 21, 12, 12, 0); Date endMinute = new Date(new Date(117, 0, 21, 12, 12, 59).getTime() + 999); Date nextMinute = new Date(117, 0, 21, 12, 13, 0); assertThat(DateUtil.isSameTime(DateUtil.beginOfYear(date), beginYear)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.endOfYear(date), endYear)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.nextYear(date), nextYear)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.beginOfMonth(date), beginMonth)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.endOfMonth(date), endMonth)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.nextMonth(date), nextMonth)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.beginOfWeek(date), beginWeek)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.endOfWeek(date), endWeek)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.nextWeek(date), nextWeek)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.beginOfDate(date), beginDate)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.endOfDate(date), endDate)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.nextDate(date), nextDate)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.beginOfHour(date), beginHour)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.endOfHour(date), endHour)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.nextHour(date), nextHour)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.beginOfMinute(date), beginMinute)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.endOfMinute(date), endMinute)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.nextMinute(date), nextMinute)).isTrue(); } @Test public void changeDay() { Date date = new Date(106, 10, 1, 12, 23, 44); Date expectDate1 = new Date(106, 10, 3); Date expectDate2 = new Date(106, 9, 31); Date expectDate3 = new Date(106, 11, 1); Date expectDate4 = new Date(106, 7, 1); Date expectDate5 = new Date(106, 10, 1, 13, 23, 44); Date expectDate6 = new Date(106, 10, 1, 10, 23, 44); Date expectDate7 = new Date(106, 10, 1, 12, 24, 44); Date expectDate8 = new Date(106, 10, 1, 12, 21, 44); Date expectDate9 = new Date(106, 10, 1, 12, 23, 45); Date expectDate10 = new Date(106, 10, 1, 12, 23, 42); Date expectDate11 = new Date(106, 10, 8); Date expectDate12 = new Date(106, 9, 25); assertThat(DateUtil.isSameDay(DateUtil.addDays(date, 2), expectDate1)).isTrue(); assertThat(DateUtil.isSameDay(DateUtil.subDays(date, 1), expectDate2)).isTrue(); assertThat(DateUtil.isSameDay(DateUtil.addWeeks(date, 1), expectDate11)).isTrue(); assertThat(DateUtil.isSameDay(DateUtil.subWeeks(date, 1), expectDate12)).isTrue(); assertThat(DateUtil.isSameDay(DateUtil.addMonths(date, 1), expectDate3)).isTrue(); assertThat(DateUtil.isSameDay(DateUtil.subMonths(date, 3), expectDate4)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.addHours(date, 1), expectDate5)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.subHours(date, 2), expectDate6)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.addMinutes(date, 1), expectDate7)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.subMinutes(date, 2), expectDate8)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.addSeconds(date, 1), expectDate9)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.subSeconds(date, 2), expectDate10)).isTrue(); } @Test public void setDay() { Date date = new Date(116, 10, 1, 10, 10, 1); Date expectedDate = new Date(116, 10, 3); Date expectedDate2 = new Date(116, 11, 1); Date expectedDate3 = new Date(117, 10, 1); Date expectedDate4 = new Date(116, 10, 1, 9, 10, 1); Date expectedDate5 = new Date(116, 10, 1, 10, 9, 1); Date expectedDate6 = new Date(116, 10, 1, 10, 10, 10); assertThat(DateUtil.isSameDay(DateUtil.setDays(date, 3), expectedDate)).isTrue(); assertThat(DateUtil.isSameDay(DateUtil.setMonths(date, 11), expectedDate2)).isTrue(); assertThat(DateUtil.isSameDay(DateUtil.setYears(date, 2017), expectedDate3)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.setHours(date, 9), expectedDate4)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.setMinutes(date, 9), expectedDate5)).isTrue(); assertThat(DateUtil.isSameTime(DateUtil.setSeconds(date, 10), expectedDate6)).isTrue(); } @Test public void getDayOfWeek() { // 2017-01-09 Date date = new Date(117, 0, 9); assertThat(DateUtil.getDayOfWeek(date)).isEqualTo(1); Date date2 = new Date(117, 0, 15); assertThat(DateUtil.getDayOfWeek(date2)).isEqualTo(7); } @Test public void isLeapYear() { // 2008-01-09,整除4年, true Date date = new Date(108, 0, 9); assertThat(DateUtil.isLeapYear(date)).isTrue(); // 2000-01-09,整除400年,true date = new Date(100, 0, 9); assertThat(DateUtil.isLeapYear(date)).isTrue(); // 1900-01-09,整除100年,false date = new Date(0, 0, 9); assertThat(DateUtil.isLeapYear(date)).isFalse(); } @Test public void getXXofXX() { // 2008-02-09, 整除4年, 闰年 Date date = new Date(108, 2, 9); assertThat(DateUtil.getMonthLength(date)).isEqualTo(29); // 2009-02-09, 整除4年, 非闰年 Date date2 = new Date(109, 2, 9); assertThat(DateUtil.getMonthLength(date2)).isEqualTo(28); Date date3 = new Date(108, 8, 9); assertThat(DateUtil.getMonthLength(date3)).isEqualTo(31); Date date4 = new Date(109, 11, 30); assertThat(DateUtil.getDayOfYear(date4)).isEqualTo(364); Date date5 = new Date(117, 0, 12); assertThat(DateUtil.getWeekOfMonth(date5)).isEqualTo(3); assertThat(DateUtil.getWeekOfYear(date5)).isEqualTo(3); } }