前言
- 之前我们说了类转换工具、集合工具,今天我们来谈谈和我们息息相关的时间工具类
获取当天开始时间
- 获取当天开始时间其实很简单,只需要知道当前时间,替换掉时分秒部分就行了。但是如果我们自己去实现那么也还是很麻烦的。还好Java原生有支持
public static Date getDayBegin() {
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
- 通过代码我们能够知道java中时间有四个层面、时分秒毫秒
获取当天结束时间
- 又开始时间就会有结束时间。同样的方法同样的味道,我们只需要将四个单位上设置成单元内最后一个值就可以了。
public static Date getDayEnd() {
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
return cal.getTime();
}
获取一段时间前后的时间
- 今天是1994年2月16日,如果我想获取两天前的日期那该如何操作呢? 如果我想获取3天后又该如何操作呢?
public static Date getDateFromDateJudice(Date date , Integer length,int type){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(type, calendar.get(type)+length);
return calendar.getTime();
}
- 首先解释下参数吧,第一个参数date我们都是知道的就是我们需要以该时间节点为起点进行向前向后查找对应的时间长度
- length就是我们的跨度和type对应使用
- type是我们跨越的单元,时分秒,天周月;
向前推送一个月
getDateFromDateJudice(beginDate, -1,Calendar.MONTH);
向后推送一天
getDateFromDateJudice(beginDate, 1,Calendar.DAY);
获取当前时间是哪年
- 这些都很简单,java也有方法对应。date类直接获取就可以了,但是官方已经不推荐使用这个方法了,我们使用推荐的方式实现一下吧
public static Integer getNowYear() {
Date date = new Date();
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
return Integer.valueOf(gc.get(1));
}
获取周序列
- 相信你们经常写周报吧,周报的标题需要体现出本年度的第几周。你不会还在一直算吧。作为程序员直接代码生成呗
public static Integer getWeekIndexByDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
return calendar.get(Calendar.WEEK_OF_YEAR);
}
获取日期差值
- 平常生活中经常需要判断两个日期间隔了多久,在代码中精度会更高。看看程序如何计算吧
public static int getDiffDays(Date beginDate, Date endDate) {
if (beginDate == null || endDate == null) {
throw new IllegalArgumentException("getDiffDays param is null!");
}
long diff = (endDate.getTime() - beginDate.getTime()) / (1000 * 60 * 60 * 24);
int days = new Long(diff).intValue();
return days;
}
总结
- 这里算是抛砖引玉,关于时间的操作功能肯定还有各种各样的,这里只是列举出我平时经常使用的工具类