org.apache.commons.lang3.time

简述

这个包是我感觉比较实用的一个,提供了很多方便操作日期和时间的算法。

API

DateFormatUtils

public static String format(Date date,String pattern)

格式化日期,不用自己再去写SimpleDateFormat了

// 2019-06-01 19:02:45
System.out.println(DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));

DateUtils

public static Date addDays(Date date,int amount)

public static Date addHours(Date date,int amount)

public static Date addMilliseconds(Date date,int amount)

static Date addMonths(Date date, int amount)

public static Date addMinutes(Date date, int amount)

public static Date addSeconds(Date date,=,int amount)

static Date addWeeks(Date date, int amount)

static Date addYears(Date date, int amount)

一组对时间进行加减的方法,如果是负数是相应的减少

Date date = new Date();
// Sat Jun 01 21:04:06 CST 2019
System.out.println(date);
// Fri May 31 21:04:06 CST 2019
System.out.println(DateUtils.addDays(date, -1));
// Sat Jun 01 22:04:06 CST 2019
System.out.println(DateUtils.addHours(date, 1));
// Sat Jun 01 21:04:07 CST 2019
System.out.println(DateUtils.addMilliseconds(date,1000));
// Sat Jun 01 21:05:06 CST 2019
System.out.println(DateUtils.addMinutes(date, 1));
// Mon Jul 01 21:04:06 CST 2019
System.out.println(DateUtils.addMonths(date, 1));
// Sat Jun 01 21:04:07 CST 2019
System.out.println(DateUtils.addSeconds(date, 1));
// Sat Jun 08 21:04:06 CST 2019
System.out.println(DateUtils.addWeeks(date, 1));
// Mon Jun 01 21:04:06 CST 2020
System.out.println(DateUtils.addYears(date, 1));

static Date ceiling(Date date, int field)

在某个field上进行向上取整

Date date = new Date();
// 2019-06-01 21:23:29
print(date);
// 2020-01-01 00:00:00
print(DateUtils.ceiling(date, Calendar.YEAR));
// 2019-07-01 00:00:00
print(DateUtils.ceiling(date, Calendar.MONTH));
// 2019-06-02 00:00:00
print(DateUtils.ceiling(date, Calendar.DAY_OF_MONTH));
// 2019-06-01 22:00:00
print(DateUtils.ceiling(date, Calendar.HOUR_OF_DAY));
// 2019-06-01 21:24:00
print(DateUtils.ceiling(date, Calendar.MINUTE));
// 2019-06-01 21:23:30
print(DateUtils.ceiling(date, Calendar.SECOND));

获取时间片段

注意:Valid fragments are: Calendar.YEAR, Calendar.MONTH, both Calendar.DAY_OF_YEAR and Calendar.DATE, Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND and Calendar.MILLISECOND A fragment less than or equal to a HOUR field will return 0.

Date date = new Date();
// 2019-06-01 21:23:29
print(date);
// 2
System.out.println(DateUtils.getFragmentInDays(date, Calendar.MONTH));
// 41
System.out.println(DateUtils.getFragmentInHours(date, Calendar.MONTH));
// 151014738
System.out.println(DateUtils.getFragmentInMilliseconds(date, Calendar.MONTH));
// 2516
System.out.println(DateUtils.getFragmentInMinutes(date, Calendar.MONTH));
// 151014
System.out.println(DateUtils.getFragmentInSeconds(date, Calendar.MONTH));

static boolean isSameDay(Date date1, Date date2)

判断两个日期是不是同一天

Date date = new Date();
Date date1 = new Date();
// 2019-06-01 21:23:29
print(date);
print(date1);
// true
System.out.println(DateUtils.isSameDay(date1, date));

static Date parseDate(String str, String… parsePatterns)

解析日期字符串,多个匹配模式,有一个模板匹配上就能够解析

String dateString = "2019-06-01 18:03:23";
// 2019-06-01 18:03:23
Date dateTest = DateUtils.parseDate(dateString, "yyyy-MM-dd HH:mm:ss");

static Date setDays(Date date, int amount)

  • static Date setHours(Date date, int amount)
  • static Date setMilliseconds(Date date, int amount)
  • static Date setMinutes(Date date, int amount)
  • static Date setMonths(Date date, int amount)
  • static Date setSeconds(Date date, int amount)
  • static Date setYears(Date date, int amount)
    设置日期分量

static Date truncate(Object date, int field)

截取日期分量

static int truncatedCompareTo(Calendar cal1, Calendar cal2, int field)

比较两个日期在某个域上的大小
小于,等于,大于分别返回-1,0,1

static boolean truncatedEquals(Date date1, Date date2, int field)

判断两个日期在某个分量上是否相等

DurationFormatUtils

static String formatDuration(long durationMillis, String format)

将毫秒进行格式化, 比如100000毫秒格式化

  • static String formatPeriod(long startMillis, long endMillis, String format)
    对一个时间段毫秒进行格式化
// 0天0小时1分钟40秒
System.out.println(DurationFormatUtils.formatDuration(100000, "d天H小时m分钟s秒"));
// 0天0小时1分钟39秒
System.out.println(DurationFormatUtils.formatPeriod(1000,100000, "d天H小时m分钟s秒"));

格式化参数

符号 含义
y years
M months
d days
H hours
m minutes
s seconds
S milliseconds
‘text’ arbitrary text content

你可能感兴趣的:(JAVA拓展)