commons-lang3中DateUtils类方法介绍

转自:https://www.cnblogs.com/aston/p/9053201.html

aston  

commons-lang3中DateUtils类方法介绍

添加commons-lang3的Maven依赖

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.7</version>
</dependency>

 

运行需要添加import

commons-lang3中DateUtils类方法介绍
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
import org.apache.commons.lang3.time.DateUtils;
commons-lang3中DateUtils类方法介绍

 

DateUtils类的几个重要方法及注释

commons-lang3中DateUtils类方法介绍
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd hh:mm:ss");

Date date = new Date();

/**
 * String转换成Date
 * arg0 : 日期字符串 String
 * arg1 : 特定的地理,政治和文化地区.可以传null
 * arg3 : 日期格式.与arg0格式一致 String
 * 该方法对日期和时间的解释是宽松的
 * 宽松的解释日期(如 1996 年 2 月 42 日)将被视为等同于 1996 年 2 月 1 日后的第 41 天
 * 如果是严格的解释,此类日期就会引发异常
 */
Date date1 = DateUtils.parseDate("20171012 14:30:12", Locale.TRADITIONAL_CHINESE, "yyyyMMdd hh:mm:ss");
Date date2 = DateUtils.parseDate("20171012 14:30:12", Locale.TRADITIONAL_CHINESE, "yyyyMMdd hh:mm:ss");

/**
 * String转换成Date 严格的
 * arg0 : 日期字符串 String
 * arg1 : 特定的地理,政治和文化地区.可以传null
 * arg3 : 日期格式.与arg0格式一致 String
 * 该方法对日期和时间的解释是严格的
 */
Date date3 = DateUtils.parseDateStrictly("20171012", Locale.TRADITIONAL_CHINESE, "yyyyMMdd");
Date date4 = DateUtils.parseDateStrictly("20171012", Locale.TRADITIONAL_CHINESE, "yyyyMMdd");

/**
 * 判断两个日期是否是同一天
 * arg0 arg1 数据类型 : Date Calendar
 * 比较arg0 arg1的
 * ERA = 0 年代
 * YEAR = 1 年
 * DAY_OF_YEAR = 6 年中的第几天
 */
DateUtils.isSameDay(date3, date4);
System.out.println("isSameDay = " + DateUtils.isSameDay(date3, date4));

/**
 * 判断两个日期是不是同一毫秒
 * arg0 arg1 数据类型 : Date Calendar
 * 自1970年1月1日00:00:00 GMT 的毫秒数是否相等
 */
DateUtils.isSameInstant(date1, date2);
System.out.println("isSameInstant = " + DateUtils.isSameInstant(date1, date2));

/**
 * 判断是否是同一个本地时间
 * arg0 arg1 数据类型 : Calendar
 * 比较arg0 arg1的
 * 数据类型
 * ERA = 0 年代
 * YEAR = 1 年
 * DAY_OF_YEAR = 6 年中的第几天
 * HOUR_OF_DAY = 11 天中的第几个小时
 * MINUTE = 12 分钟
 * SECOND = 13 秒
 * MILLISECOND = 14 毫秒
 */
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
DateUtils.isSameLocalTime(cal1, cal2);
System.out.println("isSameLocalTime = " + DateUtils.isSameLocalTime(cal1, cal2));

/**
 * 获取指定日期前后arg1年
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addYears(date1, 4);
System.out.println("addYears = " + sdf.format(date));

/**
 * 获取指定日期前后arg1月
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addMonths(date1, 4);
System.out.println("addMonths = " + sdf.format(date));

/**
 * 获取指定日期前后arg1周
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addWeeks(date1, 4);
System.out.println("addWeeks = " + sdf.format(date));

/**
 * 获取指定日期前后arg1天
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addDays(date1, 4);
System.out.println("addDays = " + sdf.format(date));

/**
 * 获取指定日期前后arg1小时
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addHours(date1, 4);
System.out.println("addHours = " + sdf.format(date));

/**
 * 获取指定日期前后arg1分钟
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addMinutes(date1, 4);
System.out.println("addMinutes = " + sdf.format(date));

/**
 * 获取指定日期前后arg1秒
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addSeconds(date1, 4);
System.out.println("addSeconds = " + sdf.format(date));

/**
 * 获取指定日期前后arg1毫秒
 * arg0 : 指定日期 Date类型
 * arg1 : int型,正数向后天数,0当天,负数向前天数
 */
date = DateUtils.addMilliseconds(date1, 4);
System.out.println("addMilliseconds = " + sdf.format(date));

/**
 * 指定日期年的值
 * arg0 : 日期 Date类型
 * arg1 : int型
 */
date = DateUtils.setYears(date1, 2008);
System.out.println("setYears = " + sdf.format(date));

/**
 * 指定日期月的值
 * arg0 : 日期 Date类型
 * arg1 : int型 范围在 1-12
 */
date = DateUtils.setMonths(date1, 1);
System.out.println("setMonths = " + sdf.format(date));

/**
 * 指定日期天的值
 * arg0 : 日期 Date类型
 * arg1 : int型 范围在 1-31(不同月份值略有不同)
 */
date = DateUtils.setDays(date1, 24);
System.out.println("setDays = " + sdf.format(date));

/**
 * 指定日期小时的值
 * arg0 : 日期 Date类型
 * arg1 : int型 范围在1-23
 */
date = DateUtils.setHours(date1, 23);
System.out.println("setHours = " + sdf.format(date));

/**
 * 指定日期分钟的值
 * arg0 : 日期 Date类型
 * arg1 : int型 范围在1-59
 */
date = DateUtils.setMinutes(date1, 56);
System.out.println("setMinutes = " + sdf.format(date));

/**
 * 指定日期秒的值
 * arg0 : 日期 Date类型
 * arg1 : int型 范围在1-59
 */
date = DateUtils.setSeconds(date1, 14);
System.out.println("setMinutes = " + sdf.format(date));

/**
 * 指定日期毫秒的值
 * arg0 : 日期 Date类型
 * arg1 : int型
 */
date = DateUtils.setMilliseconds(date1, 100);
System.out.println("setMinutes = " + sdf.format(date));

/**
 * 相当于
 * Calendar cal3 = Calendar.getInstance();
 * cal3.setTime(date);
 * 得到的cal
 */
Calendar cal3 = DateUtils.toCalendar(date1);

/**
 * 获取时区
 * timeZone 系统默认
 * timeZone1 系统默认时区
 * timeZone2 设置时区
 */
Calendar calendar = new GregorianCalendar();
TimeZone timeZone = calendar.getTimeZone();
TimeZone timeZone1 = TimeZone.getDefault();
TimeZone timeZone2 = TimeZone.getTimeZone("Europe/Copenhagen");

/**
 * Date 转换成 Calendar 带时区
 * arg0 : 日期 Date类型
 * arg1 : 时区
 */
Calendar cal4 = DateUtils.toCalendar(date1, timeZone2);

long fragment = 0;

/**
 * 获取指定日期中从指定位置起的毫秒数
 * arg0 : 指定的日期 Date类型 或 Calendar类型
 * arg1 : 指定从什么位置开始 int类型:建议使用 Calendar.YEAR Calendar.MONTH 等常量
 */
fragment = DateUtils.getFragmentInMilliseconds(date1, Calendar.MONDAY);
System.out.println("getFragmentInMilliseconds = " + fragment);

/**
 * 获取指定日期中从指定位置起的秒数
 * arg0 : 指定的日期 Date类型 或 Calendar类型
 * arg1 : 指定从什么位置开始 int类型:建议使用 Calendar.YEAR Calendar.MONTH 等常量
 */
fragment = DateUtils.getFragmentInSeconds(date1, Calendar.MONDAY);
System.out.println("getFragmentInSeconds = " + fragment);

/**
 * 获取指定日期中从指定位置起的分钟数
 * arg0 : 指定的日期 Date类型 或 Calendar类型
 * arg1 : 指定从什么位置开始 int类型:建议使用 Calendar.YEAR Calendar.MONTH 等常量
 */
fragment = DateUtils.getFragmentInMinutes(date1, Calendar.MONDAY);
System.out.println("getFragmentInMinutes = " + fragment);

/**
 * 获取指定日期中从指定位置起的小时数
 * arg0 : 指定的日期 Date类型 或 Calendar类型
 * arg1 : 指定从什么位置开始 int类型:建议使用 Calendar.YEAR Calendar.MONTH 等常量
 */
fragment = DateUtils.getFragmentInHours(date1, Calendar.MONDAY);
System.out.println("getFragmentInHours = " + fragment);

/**
 * 获取指定日期中从指定位置起的天数
 * arg0 : 指定的日期 Date类型 或 Calendar类型
 * arg1 : 指定从什么位置开始 int类型:建议使用 Calendar.YEAR Calendar.MONTH 等常量
 */
fragment = DateUtils.getFragmentInDays(date1, Calendar.MONDAY);
System.out.println("getFragmentInDays = " + fragment);

boolean isEquals = false;

/**
 * 判断两个时间在指定的位置之上是否相等
 * arg0 : 时间1 Date类型 或 Calendar类型
 * arg1 : 时间2 Date类型 或 Calendar类型
 * arg2 : 指定在位置上开始比较 int类型:建议使用 Calendar.YEAR Calendar.MONTH 等常量
 */
isEquals = DateUtils.truncatedEquals(date1, date2, Calendar.MONDAY);
System.out.println("truncatedEquals = " + isEquals);

int truncatedCompare = -1;

/**
 * 比较arg0与arg1两个时间在指定的位置上的时间差值
 * arg0 : 时间1 Date类型 或 Calendar类型
 * arg1 : 时间2 Date类型 或 Calendar类型
 * arg2 : 指定在位置上开始比较 int类型:建议使用 Calendar.YEAR Calendar.MONTH 等常量
 */
truncatedCompare = DateUtils.truncatedCompareTo(date1, date2, Calendar.MONDAY);
System.out.println("truncatedCompareTo = " + truncatedCompare);
上一篇:spring事务


下一篇:你真的会用 @Transactional 吗?