最近偶遇apache开发的工作Java工具包,一使用,就发现自己爱上它了。不多说了,下面介绍org.apache.commons.lang3.time包中处理java程序员为之头疼的时间的类。
附上官网jar包下载地址:
在这之前还是先简单说一下java本身的时间处理类。
DateDate的绝大部分 API 都deprecated(过时)了,以下是目前可以使用的
Date() 代表执行到这句构造函数时的当前时间
Date(long d) 用一个相对于1970 年 1 月 1 日 00:00:00 以来的走过的毫秒数创建时间对象。
如:new Date() 等价于 new Date(System.currentTimeMillis())
boolean before(Date when) 当前时间对象是否早于 when
boolean after(Date when) 当前时间对象是否晚于 when
toString()
hashCode()
equals()
Calender
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected。
具体可见API手册。
SimpleDateFromatSimpleDateFromat不是线程安全的,这是因为它继承了DateFormat中的一个Calendar成员,每次在执行format操作时,都会改成成员calendar的状态。这就是不安全的根源。
多线程下,很可能对Calendar的写 和 读 操作不同步(不是被同一个线程执行的),就会发生意外。
class DateFromat
{
protected Calendar calendar;
//...
}
SimpleDateFromat extends DateFromat
{
private StringBuffer format(Date date, StringBuffer toAppendTo,FieldDelegate delegate)
{
// Convert input date to time field list
calendar.setTime(date);
//....
//....
}
}
下面开始介绍文章的主角类。
DateUtils提供了对时间对象的运算操作,就像和操作 int 一样。
工具类,不允许创建实例
//-------------------静态字段-------------------
public static final long MILLIS_PER_DAY = 86400000L 一天的毫秒数
public static final long MILLIS_PER_HOUR = 3600000L 一个小时的毫秒数
public static final long MILLIS_PER_MINUTE = 60000L 一分钟的毫秒数
public static final long MILLIS_PER_SECOND = 1000L 一秒钟的毫秒数
//-------------------静态方法------------------
Date的运算和修改
static Date addDays(Date date, int amount) 返回一个date 时间对象 添加 amount 天 后的新的Date 对象
static Date addHours(Date date, int amount) 返回一个date 时间对象 添加 amount h 后的新的Date 对象
static Date addMilliseconds(Date date, int amount) 返回一个date 时间对象 添加 amount 毫秒 后的新的Date 对象
static Date addMinutes(Date date, int amount) 返回一个date 时间对象 添加 amount 分钟 后的新的Date 对象
static Date addMonths(Date date, int amount) 返回一个date 时间对象 添加 amount 月 后的新的Date 对象
static Date addSeconds(Date date, int amount) 返回一个date 时间对象 添加 amount 秒 后的新的Date 对象
static Date addWeeks(Date date, int amount) 返回一个date 时间对象 添加 amount 周 后的新的Date 对象
static Date addYears(Date date, int amount) 返回一个date 时间对象 添加 amount 年 后的新的Date 对象
static Date setDays(Date date, int amount) 修改一个Date 对象的 天数 并返回新的Date对象。
static Date setHours(Date date, int amount) 修改一个Date 对象的 小时字段并返回新的Date
static Date setMilliseconds(Date date, int amount) 修改一个Date 对象的 毫秒,并返回新的Date 对象
static Date setMinutes(Date date, int amount) 修改一个Date 对象的 分钟
static Date setMonths(Date date, int amount) 修改月份
static Date setSeconds(Date date, int amount) 修改秒
static Date setYears(Date date, int amount) 修改 年
字符串------>Date