使用apache.lang包安全简洁地操作Java时间

最近偶遇apache开发的工作Java工具包,一使用,就发现自己爱上它了。不多说了,下面介绍org.apache.commons.lang3.time包中处理java程序员为之头疼的时间的类。

附上官网jar包下载地址:

在这之前还是先简单说一下java本身的时间处理类。

Date

Date的绝大部分 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手册。

SimpleDateFromat

SimpleDateFromat不是线程安全的,这是因为它继承了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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20f324c1df0aaf72b4e2128182af2634.html