package com.blankj.utilcode.util; import com.blankj.utilcode.constant.TimeConstants; import org.junit.Test; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; /** * <pre> * author: Blankj * blog : http://blankj.com * time : 2016/08/12 * desc : TimeUtils单元测试 * </pre> */ public class TimeUtilsTest { private final DateFormat defaultFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); private final DateFormat mFormat = new SimpleDateFormat("yyyy MM dd HH:mm:ss", Locale.getDefault()); private final long timeMillis = 1493887049000L; private final Date timeDate = new Date(timeMillis); private final String timeString = defaultFormat.format(timeDate); private final String timeStringFormat = mFormat.format(timeDate); private final long tomorrowTimeMillis = 1493973449000L; private final Date tomorrowTimeDate = new Date(tomorrowTimeMillis); private final String tomorrowTimeString = defaultFormat.format(tomorrowTimeDate); private final String tomorrowTimeStringFormat = mFormat.format(tomorrowTimeDate); private final long delta = 1;// 允许误差1ms @Test public void millis2String() throws Exception { assertEquals(timeString, TimeUtils.millis2String(timeMillis)); assertEquals(timeStringFormat, TimeUtils.millis2String(timeMillis, mFormat)); } @Test public void string2Millis() throws Exception { assertEquals(timeMillis, TimeUtils.string2Millis(timeString)); assertEquals(timeMillis, TimeUtils.string2Millis(timeStringFormat, mFormat)); } @Test public void string2Date() throws Exception { assertEquals(timeDate, TimeUtils.string2Date(timeString)); assertEquals(timeDate, TimeUtils.string2Date(timeStringFormat, mFormat)); } @Test public void date2String() throws Exception { assertEquals(timeString, TimeUtils.date2String(timeDate)); assertEquals(timeStringFormat, TimeUtils.date2String(timeDate, mFormat)); } @Test public void date2Millis() throws Exception { assertEquals(timeMillis, TimeUtils.date2Millis(timeDate)); } @Test public void millis2Date() throws Exception { assertEquals(timeDate, TimeUtils.millis2Date(timeMillis)); } @Test public void getTimeSpan() throws Exception { long testTimeMillis = timeMillis + 120 * TimeConstants.SEC; String testTimeString = TimeUtils.millis2String(testTimeMillis); String testTimeStringFormat = TimeUtils.millis2String(testTimeMillis, mFormat); Date testTimeDate = TimeUtils.millis2Date(testTimeMillis); assertEquals(120, TimeUtils.getTimeSpan(timeString, testTimeString, TimeConstants.SEC)); assertEquals(2, TimeUtils.getTimeSpan(timeStringFormat, testTimeStringFormat, mFormat, TimeConstants.MIN)); assertEquals(2, TimeUtils.getTimeSpan(timeDate, testTimeDate, TimeConstants.MIN)); assertEquals(120, TimeUtils.getTimeSpan(timeMillis, testTimeMillis, TimeConstants.SEC)); } @Test public void getFitTimeSpan() throws Exception { long testTimeMillis = timeMillis + 10 * TimeConstants.DAY + 10 * TimeConstants.MIN + 10 * TimeConstants.SEC; String testTimeString = TimeUtils.millis2String(testTimeMillis); String testTimeStringFormat = TimeUtils.millis2String(testTimeMillis, mFormat); Date testTimeDate = TimeUtils.millis2Date(testTimeMillis); assertEquals("10天10分钟10秒", TimeUtils.getFitTimeSpan(timeString, testTimeString, 5)); assertEquals("10天10分钟10秒", TimeUtils.getFitTimeSpan(timeStringFormat, testTimeStringFormat, mFormat, 5)); assertEquals("10天10分钟10秒", TimeUtils.getFitTimeSpan(timeDate, testTimeDate, 5)); assertEquals("10天10分钟10秒", TimeUtils.getFitTimeSpan(timeMillis, testTimeMillis, 5)); } @Test public void getNowMills() throws Exception { assertEquals(System.currentTimeMillis(), TimeUtils.getNowMills(), delta); } @Test public void getNowString() throws Exception { assertEquals(System.currentTimeMillis(), TimeUtils.string2Millis(TimeUtils.getNowString()), delta); assertEquals(System.currentTimeMillis(), TimeUtils.string2Millis(TimeUtils.getNowString(mFormat), mFormat), delta); } @Test public void getNowDate() throws Exception { assertEquals(System.currentTimeMillis(), TimeUtils.date2Millis(TimeUtils.getNowDate()), delta); } @Test public void getTimeSpanByNow() throws Exception { assertEquals(0, TimeUtils.getTimeSpanByNow(TimeUtils.getNowString(), TimeConstants.MSEC), delta); assertEquals(0, TimeUtils.getTimeSpanByNow(TimeUtils.getNowString(mFormat), mFormat, TimeConstants.MSEC), delta); assertEquals(0, TimeUtils.getTimeSpanByNow(TimeUtils.getNowDate(), TimeConstants.MSEC), delta); assertEquals(0, TimeUtils.getTimeSpanByNow(TimeUtils.getNowMills(), TimeConstants.MSEC), delta); } @Test public void getFitTimeSpanByNow() throws Exception { long spanMillis = 6 * TimeConstants.DAY + 6 * TimeConstants.HOUR + 6 * TimeConstants.MIN + 6 * TimeConstants.SEC; assertEquals("6天6小时6分钟6秒", TimeUtils.getFitTimeSpanByNow(TimeUtils.millis2String(System.currentTimeMillis() + spanMillis), 5)); assertEquals("6天6小时6分钟6秒", TimeUtils.getFitTimeSpanByNow(TimeUtils.millis2String(System.currentTimeMillis() + spanMillis, mFormat), mFormat, 5)); assertEquals("6天6小时6分钟6秒", TimeUtils.getFitTimeSpanByNow(TimeUtils.millis2Date(System.currentTimeMillis() + spanMillis), 5)); assertEquals("6天6小时6分钟6秒", TimeUtils.getFitTimeSpanByNow(System.currentTimeMillis() + spanMillis, 5)); } @Test public void getFriendlyTimeSpanByNow() throws Exception { assertEquals("刚刚", TimeUtils.getFriendlyTimeSpanByNow(TimeUtils.getNowString())); assertEquals("刚刚", TimeUtils.getFriendlyTimeSpanByNow(TimeUtils.getNowString(mFormat), mFormat)); assertEquals("刚刚", TimeUtils.getFriendlyTimeSpanByNow(TimeUtils.getNowDate())); assertEquals("刚刚", TimeUtils.getFriendlyTimeSpanByNow(TimeUtils.getNowMills())); assertEquals("1秒前", TimeUtils.getFriendlyTimeSpanByNow(TimeUtils.getNowMills() - TimeConstants.SEC)); assertEquals("1分钟前", TimeUtils.getFriendlyTimeSpanByNow(TimeUtils.getNowMills() - TimeConstants.MIN)); } @Test public void getMillis() throws Exception { assertEquals(tomorrowTimeMillis, TimeUtils.getMillis(timeMillis, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeMillis, TimeUtils.getMillis(timeString, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeMillis, TimeUtils.getMillis(timeStringFormat, mFormat, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeMillis, TimeUtils.getMillis(timeDate, 1, TimeConstants.DAY)); } @Test public void getString() throws Exception { assertEquals(tomorrowTimeString, TimeUtils.getString(timeMillis, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeStringFormat, TimeUtils.getString(timeMillis, mFormat, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeString, TimeUtils.getString(timeString, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeStringFormat, TimeUtils.getString(timeStringFormat, mFormat, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeString, TimeUtils.getString(timeDate, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeStringFormat, TimeUtils.getString(timeDate, mFormat, 1, TimeConstants.DAY)); } @Test public void getDate() throws Exception { assertEquals(tomorrowTimeDate, TimeUtils.getDate(timeMillis, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeDate, TimeUtils.getDate(timeString, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeDate, TimeUtils.getDate(timeStringFormat, mFormat, 1, TimeConstants.DAY)); assertEquals(tomorrowTimeDate, TimeUtils.getDate(timeDate, 1, TimeConstants.DAY)); } @Test public void getMillisByNow() throws Exception { assertEquals(System.currentTimeMillis() + TimeConstants.DAY, TimeUtils.getMillisByNow(1, TimeConstants.DAY), delta); } @Test public void getStringByNow() throws Exception { long tomorrowMillis = TimeUtils.string2Millis(TimeUtils.getStringByNow(1, TimeConstants.DAY)); assertEquals(System.currentTimeMillis() + TimeConstants.DAY, tomorrowMillis, delta); tomorrowMillis = TimeUtils.string2Millis(TimeUtils.getStringByNow(1, mFormat, TimeConstants.DAY), mFormat); assertEquals(System.currentTimeMillis() + TimeConstants.DAY, tomorrowMillis, delta); } @Test public void getDateByNow() throws Exception { long tomorrowMillis = TimeUtils.date2Millis(TimeUtils.getDateByNow(1, TimeConstants.DAY)); assertEquals(System.currentTimeMillis() + TimeConstants.DAY, TimeUtils.getMillisByNow(1, TimeConstants.DAY), delta); } @Test public void isToday() throws Exception { long todayTimeMillis = System.currentTimeMillis(); String todayTimeString = TimeUtils.millis2String(todayTimeMillis); String todayTimeStringFormat = TimeUtils.millis2String(todayTimeMillis, mFormat); Date todayTimeDate = TimeUtils.millis2Date(todayTimeMillis); long tomorrowTimeMillis = todayTimeMillis + TimeConstants.DAY; String tomorrowTimeString = TimeUtils.millis2String(tomorrowTimeMillis); Date tomorrowTimeDate = TimeUtils.millis2Date(tomorrowTimeMillis); assertTrue(TimeUtils.isToday(todayTimeString)); assertTrue(TimeUtils.isToday(todayTimeStringFormat, mFormat)); assertTrue(TimeUtils.isToday(todayTimeDate)); assertTrue(TimeUtils.isToday(todayTimeMillis)); assertFalse(TimeUtils.isToday(tomorrowTimeString)); assertFalse(TimeUtils.isToday(tomorrowTimeStringFormat, mFormat)); assertFalse(TimeUtils.isToday(tomorrowTimeDate)); assertFalse(TimeUtils.isToday(tomorrowTimeMillis)); } @Test public void isLeapYear() throws Exception { assertFalse(TimeUtils.isLeapYear(timeString)); assertFalse(TimeUtils.isLeapYear(timeStringFormat, mFormat)); assertFalse(TimeUtils.isLeapYear(timeDate)); assertFalse(TimeUtils.isLeapYear(timeMillis)); assertTrue(TimeUtils.isLeapYear(2016)); assertFalse(TimeUtils.isLeapYear(2017)); } @Test public void getChineseWeek() throws Exception { assertEquals("星期四", TimeUtils.getChineseWeek(timeString)); assertEquals("星期四", TimeUtils.getChineseWeek(timeStringFormat, mFormat)); assertEquals("星期四", TimeUtils.getChineseWeek(timeDate)); assertEquals("星期四", TimeUtils.getChineseWeek(timeMillis)); } @Test public void getUSWeek() throws Exception { assertEquals("Thursday", TimeUtils.getUSWeek(timeString)); assertEquals("Thursday", TimeUtils.getUSWeek(timeStringFormat, mFormat)); assertEquals("Thursday", TimeUtils.getUSWeek(timeDate)); assertEquals("Thursday", TimeUtils.getUSWeek(timeMillis)); } @Test public void getWeekIndex() throws Exception { assertEquals(5, TimeUtils.getWeekIndex(timeString)); assertEquals(5, TimeUtils.getWeekIndex(timeStringFormat, mFormat)); assertEquals(5, TimeUtils.getWeekIndex(timeDate)); assertEquals(5, TimeUtils.getWeekIndex(timeMillis)); } @Test public void getWeekOfMonth() throws Exception { assertEquals(1, TimeUtils.getWeekOfMonth(timeString)); assertEquals(1, TimeUtils.getWeekOfMonth(timeStringFormat, mFormat)); assertEquals(1, TimeUtils.getWeekOfMonth(timeDate)); assertEquals(1, TimeUtils.getWeekOfMonth(timeMillis)); } @Test public void getWeekOfYear() throws Exception { assertEquals(18, TimeUtils.getWeekOfYear(timeString)); assertEquals(18, TimeUtils.getWeekOfYear(timeStringFormat, mFormat)); assertEquals(18, TimeUtils.getWeekOfYear(timeDate)); assertEquals(18, TimeUtils.getWeekOfYear(timeMillis)); } @Test public void getChineseZodiac() throws Exception { assertEquals("鸡", TimeUtils.getChineseZodiac(timeString)); assertEquals("鸡", TimeUtils.getChineseZodiac(timeStringFormat, mFormat)); assertEquals("鸡", TimeUtils.getChineseZodiac(timeDate)); assertEquals("鸡", TimeUtils.getChineseZodiac(timeMillis)); assertEquals("鸡", TimeUtils.getChineseZodiac(2017)); } @Test public void getZodiac() throws Exception { assertEquals("金牛座", TimeUtils.getZodiac(timeString)); assertEquals("金牛座", TimeUtils.getZodiac(timeStringFormat, mFormat)); assertEquals("金牛座", TimeUtils.getZodiac(timeDate)); assertEquals("金牛座", TimeUtils.getZodiac(timeMillis)); assertEquals("狮子座", TimeUtils.getZodiac(8, 16)); } }