获取指定日期的开始和结束时间

经常需要获取某个日期的开始和结束时间,这里可以提供一个工具类。


/*
 * 文件名: 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值