package org.springside.modules.utils.time;
import static org.assertj.core.api.Assertions.*;
import java.text.ParseException;
import java.util.Date;
import org.junit.Test;
public class DateFormatUtilTest {
@Test
public void isoDateFormat() {
Date date = new Date(116, 10, 1, 12, 23, 44);
assertThat(DateFormatUtil.ISO_FORMAT.format(date)).contains("2016-11-01T12:23:44.000");
assertThat(DateFormatUtil.ISO_ON_SECOND_FORMAT.format(date)).contains("2016-11-01T12:23:44");
assertThat(DateFormatUtil.ISO_ON_DATE_FORMAT.format(date)).isEqualTo("2016-11-01");
}
@Test
public void defaultDateFormat() {
Date date = new Date(116, 10, 1, 12, 23, 44);
assertThat(DateFormatUtil.DEFAULT_FORMAT.format(date)).isEqualTo("2016-11-01 12:23:44.000");
assertThat(DateFormatUtil.DEFAULT_ON_SECOND_FORMAT.format(date)).isEqualTo("2016-11-01 12:23:44");
}
@Test
public void formatWithPattern() {
Date date = new Date(116, 10, 1, 12, 23, 44);
assertThat(DateFormatUtil.formatDate(DateFormatUtil.PATTERN_DEFAULT, date))
.isEqualTo("2016-11-01 12:23:44.000");
assertThat(DateFormatUtil.formatDate(DateFormatUtil.PATTERN_DEFAULT, date.getTime()))
.isEqualTo("2016-11-01 12:23:44.000");
}
@Test
public void parseWithPattern() throws ParseException {
Date date = new Date(116, 10, 1, 12, 23, 44);
Date resultDate = DateFormatUtil.pareDate(DateFormatUtil.PATTERN_DEFAULT, "2016-11-01 12:23:44.000");
assertThat(resultDate.getTime() == date.getTime()).isTrue();
}
@Test
public void formatDuration() {
assertThat(DateFormatUtil.formatDuration(100)).isEqualTo("00:00:00.100");
assertThat(DateFormatUtil.formatDuration(new Date(100), new Date(3000))).isEqualTo("00:00:02.900");
assertThat(DateFormatUtil.formatDuration(DateUtil.MILLIS_PER_DAY * 2 + DateUtil.MILLIS_PER_HOUR * 4))
.isEqualTo("52:00:00.000");
assertThat(DateFormatUtil.formatDurationOnSecond(new Date(100), new Date(3000))).isEqualTo("00:00:02");
assertThat(DateFormatUtil.formatDurationOnSecond(2000)).isEqualTo("00:00:02");
assertThat(DateFormatUtil.formatDurationOnSecond(DateUtil.MILLIS_PER_DAY * 2 + DateUtil.MILLIS_PER_HOUR * 4))
.isEqualTo("52:00:00");
}
@Test
public void formatFriendlyTimeSpanByNow() throws ParseException {
try {
Date now = DateFormatUtil.DEFAULT_ON_SECOND_FORMAT.parse("2016-12-11 23:30:00");
ClockUtil.useDummyClock(now);
Date lessOneSecond = DateFormatUtil.DEFAULT_FORMAT.parse("2016-12-11 23:29:59.500");
assertThat(DateFormatUtil.formatFriendlyTimeSpanByNow(lessOneSecond)).isEqualTo("刚刚");
Date lessOneMinute = DateFormatUtil.DEFAULT_FORMAT.parse("2016-12-11 23:29:55.000");
assertThat(DateFormatUtil.formatFriendlyTimeSpanByNow(lessOneMinute)).isEqualTo("5秒前");
Date lessOneHour = DateFormatUtil.DEFAULT_ON_SECOND_FORMAT.parse("2016-12-11 23:00:00");
assertThat(DateFormatUtil.formatFriendlyTimeSpanByNow(lessOneHour)).isEqualTo("30分钟前");
Date today = DateFormatUtil.DEFAULT_ON_SECOND_FORMAT.parse("2016-12-11 1:00:00");
assertThat(DateFormatUtil.formatFriendlyTimeSpanByNow(today)).isEqualTo("今天01:00");
Date yesterday = DateFormatUtil.DEFAULT_ON_SECOND_FORMAT.parse("2016-12-10 1:00:00");
assertThat(DateFormatUtil.formatFriendlyTimeSpanByNow(yesterday)).isEqualTo("昨天01:00");
Date threeDayBefore = DateFormatUtil.DEFAULT_ON_SECOND_FORMAT.parse("2016-12-09 1:00:00");
assertThat(DateFormatUtil.formatFriendlyTimeSpanByNow(threeDayBefore)).isEqualTo("2016-12-09");
} finally {
ClockUtil.useDefaultClock();
}
}
}