经常需要获取某个日期的开始和结束时间,这里可以提供一个工具类。
/*
* 文件名: BeginAndEndTimeOfDateUtil.java
* 模块说明:
* 修改历史:
* 2019-8-13 - dongtangqiang - 创建。
*/
package cn.iponkan.common;
import org.apache.commons.lang3.time.DateUtils;
import java.util.Calendar;
import java.util.Date;
/**
* 指定日期的开始和结束时间工具类
*
* @author dongtangqiang
*/
public class BeginAndEndTimeOfDateUtil {
/**
* 获取指定日期的开始时间
*
* @param certainDate
* 指定日期
* @param flex
* 正负整数,正数表示指定日期的后几天,负数表示指定日期的前几天
* @return
*/
public static Date getStartTime(Date certainDate, int flex) {
return DateUtils.truncate(DateUtils.addDays(certainDate, flex), Calendar.DATE);
}
/**
* 获取指定日期的结束时间
*
* @param certainDate
* 指定日期
* @param flex
* 正负整数,正数表示指定日期的后几天,负数表示指定日期的前几天
* @return
*/
public static Date getEndTime(Date certainDate, int flex) {
return DateUtils.addMilliseconds(
DateUtils.truncate(DateUtils.addDays(certainDate, flex + 1), Calendar.DATE), -1);
}
}
测试
/*
* 文件名: Test.java
* 模块说明:
* 修改历史:
* 2019-8-13 - dongtangqiang - 创建。
*/
package cn.iponkan.common;
import java.util.Date;
/**
* @author dongtangqiang
*/
public class Test {
public static void main(String[] args) {
System.out.println("获取今天前1天的开始时间:" + BeginAndEndTimeOfDateUtil.getStartTime(new Date(), -1));
System.out.println("获取今天前1天的结束时间:" + BeginAndEndTimeOfDateUtil.getEndTime(new Date(), -1));
System.out.println("获取今天的开始时间:" + BeginAndEndTimeOfDateUtil.getStartTime(new Date(), 0));
System.out.println("获取今天的结束时间:" + BeginAndEndTimeOfDateUtil.getEndTime(new Date(), 0));
System.out.println("获取今天后2天的开始时间:" + BeginAndEndTimeOfDateUtil.getStartTime(new Date(), 2));
System.out.println("获取今天后2天的结束时间:" + BeginAndEndTimeOfDateUtil.getEndTime(new Date(), 2));
}
}
D:\Java8\bin\java.exe -javaagent:D:\IDEA\lib\idea_rt.jar=51860:D:\IDEA\bin -Dfile.encoding=UTF-8 -classpath
获取今天前1天的开始时间:Mon Aug 12 00:00:00 CST 2019
获取今天前1天的结束时间:Mon Aug 12 23:59:59 CST 2019
获取今天的开始时间:Tue Aug 13 00:00:00 CST 2019
获取今天的结束时间:Tue Aug 13 23:59:59 CST 2019
获取今天后2天的开始时间:Thu Aug 15 00:00:00 CST 2019
获取今天后2天的结束时间:Thu Aug 15 23:59:59 CST 2019
Process finished with exit code 0