时间工具类DateUtil
考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位(一个月前等等)。
对于Date对象,我为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式的字符串,方便在输出时的调用(例如日志记录等)。
1.now、today方法
返回当前时间和日期,第一个方法返回的格式为yyyy-MM-dd HH:mm:ss,第二个返回的格式为yyyy-MM-dd
2.date方法
当前时间的DateTime对象(相当于new DateTime()或者new Date()),此外还提供一个重载方法,传递long类型参数,是给定一个Unix时间戳,返回这个时间戳的时间。
3.yearAndSeason方法
根据给定的Date对象返回一个年份和季节的字符串,例如20132表示2013年第二季度,同时提供一个yearAndSeasons方法,传入两个时间对象,提供这两个时间范围内的所有季节字符串。
4.格式化日期
格式化日期时间,最常用的是formatDateTime、formatDate方法,返回yyyy-MM-dd HH:mm:ss和yyyy-MM-dd格式的日期字符串,如果你需要特殊格式的格式化,则使用format方法,通过传入日期的模板来返回相应的字符串。formatHttpDate则是返回HTTP头部的时间格式,不经常用。
5.解析日期字符串
与字符串格式化相反的是解析日期字符串,常用的是parse方法,如果不提供日期的格式参数,则只能解析如下几种形式的日期字符串:
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
HH:mm:ss
yyyy-MM-dd HH:mm
如果你的日期格式不是这几种格式,则需要指定日期格式,对于以上格式还有专门的方法对应:
parseDateTime
parseDate
ParseTime
6.日期偏移
getBeginTimeOfDay、getEndTimeOfDay分别获得给定日期当天的开始时间和结束时间,开始时间是00:00,结束时间是23:59。
yesterday、lastWeek、lastMouth返回昨天、上周、上个月的日期。
如果需要指定日期做偏移,则使用offsiteDay、offsiteWeek、offsiteMonth来获得指定日期偏移天、偏移周、偏移月,指定的偏移量正数向未来偏移,负数向历史偏移。
如果以上还不能满足偏移要求,则使用offsiteDate偏移制定量,其中参数calendarField为偏移的粒度大小(小时、天、月等)使用Calendar类中的常数。
7.diff方法
返回两个日期的时间差,参数diffField定义了这个差的单位,单位的定义在DateUtil的常量中,例如DateUtil.SECOND_MS表示两个日期相差的秒数。
8.spendMs和spendNt方法
这两个方法主要是用于统计花费时间,例如在某个方法开头标记了了一个时间,在结尾传入这个时间,就可以计算这个方法花费的毫秒数或者纳秒数。
9.toIntSecond方法
将给定日期转化为yyMMddHHmm类型字符串并转换为int类型,不常用。