DateUtils 工具类使用
工具类:
org.apache.commons.lang3.time.DateUtils
版本:commons-lang3:3.7
地址:DateUtils API
说明:DateUtils
是专门用来处日期工具类,提供String日期转换date,日期的设置,截取,比较,四舍五入以及当前时区获取,设置,等方法
概览
DateUtils常量
DateUtils
定义了年月日时分秒常量 , 以毫秒为单位,年月日时分秒值
String转Date
参数
arg0 : 日期字符串 String , arg1: 特定的地理,政治和文化地区.可以传null, arg3 : 日期格式.与arg0格式要保持一致String
@Test
public void testStringConvertDate() throws ParseException {
//该方法对日期和时间的是宽松的(如 1996 年 2 月 42 日)将被视为等同于 1996 年 2 月 1 日后的第 41 天
Date date1 = DateUtils.parseDate("20171012 14:30:12", Locale.TRADITIONAL_CHINESE, "yyyyMMdd hh:mm:ss");
//该方法对日期和时间的解释是严格的 (如 1996 年 2 月 42 日)将会报错
Date date2 = DateUtils.parseDateStrictly("20170202", Locale.TRADITIONAL_CHINESE, "yyyyMMdd");
}
时间判断
@Test
public void testIfDate() throws ParseException {
Date date1 = DateUtils.parseDate("20171012 14:30:12", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
Date date2 = DateUtils.parseDate("20171012 14:30:12", Locale.TRADITIONAL_CHINESE, "yyyyMMdd hh:mm:ss");
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
DateUtils.isSameInstant(date1, date2);//判断两个日期是不是同一毫秒
DateUtils.isSameLocalTime(cal1, cal2);//判断是否是同一个本地的时间
}
获取指定日期前后时间
@Test
public void testGetDate() throws ParseException {
Date date1 = DateUtils.parseDate("20171012 14:30:12", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
System.out.println(date1);
Date date = DateUtils.addYears(date1, 1);//获取指定日期前后 arg 年 正数向后,负数向前
date = DateUtils.addMonths(date1, 1);//获取指定日期前后 arg 月 ..
date = DateUtils.addWeeks(date1, 1);//获取指定日期前后 arg 周 ..
date = DateUtils.addDays(date1, 1);//获取指定日期前后 arg 天 ..
date = DateUtils.addHours(date1, 4);//获取指定日期前后 arg 时 ..
date = DateUtils.addMinutes(date1, 4);//获取指定日期前后 arg 分 ..
date = DateUtils.addSeconds(date1, 4);//获取指定日期前后 arg 秒 ..
date = DateUtils.addMilliseconds(date1, 4);//获取指定日期前后 arg 毫秒 ..
}
设置指定日期的值
@Test
public void setDate() throws ParseException {
Date date = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = DateUtils.parseDate("20171012 14:30:12", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
date = DateUtils.setYears(date1, 2008);//设置指定日期年的值
date = DateUtils.setMonths(date1, 1);//设置指定日期月的值
date = DateUtils.setDays(date1, 24);//设置指定日期月的值
date = DateUtils.setHours(date1, 23);//设置指定小时的值
date = DateUtils.setMinutes(date1, 56);//指定指定日期分钟的值
date = DateUtils.setSeconds(date1, 14);//设置指定日期秒的值
date = DateUtils.setMilliseconds(date1, 100);//设置指定毫秒的值
}
时区
@Test
public void testGetTimeZone() {
Date date1 = DateUtils.parseDate("20171012 14:30:12", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
Calendar calendar = new GregorianCalendar();
TimeZone timeZone = calendar.getTimeZone();//系统默认时区
TimeZone timeZone1 = TimeZone.getDefault();//系统默认时区
TimeZone timeZone2 = TimeZone.getTimeZone("Europe/Copenhagen");//设置系统时区
Calendar cal4 = DateUtils.toCalendar(date1, timeZone2);//Date时区转换
}
四舍五入date
@Test
public void testRound() throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
Date date1 = DateUtils.parseDate("20171012 14:30:31", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
System.out.println(simpleDateFormat.format(date1));
Date round = DateUtils.round(date1, Calendar.HOUR);//四舍五入date, arg时间, arg四舍五入的单位(时) 返回20171012 03:00:00
System.out.println(simpleDateFormat.format(round));
}
Date截取
@Test
public void cutDate() throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
Date date = DateUtils.parseDate("20171012 14:30:31", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
System.out.println(simpleDateFormat.format(date));
Date truncate = DateUtils.truncate(date, Calendar.HOUR);//截取给定规则截取date arg日期,arg时
System.out.println(simpleDateFormat.format(truncate));
Date date1 = DateUtils.parseDate("20171012 14:29:31", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
Date date2 = DateUtils.parseDate("20171012 13:29:30", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
boolean b = DateUtils.truncatedEquals(date1, date2, Calendar.HOUR);//按照给定时间单位,去截取传入date , 再比较date
System.out.println(b);
}
Date向上舍入
@Test
public void testUpRound() throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
Date date = DateUtils.parseDate("20171012 14:29:31", Locale.ENGLISH, "yyyyMMdd hh:mm:ss");
System.out.println(simpleDateFormat.format(date));
Date truncate = DateUtils.ceiling(date, Calendar.YEAR);//根据给定规则来向上舍入
System.out.println(simpleDateFormat.format(truncate));
}