java 常用的时间转换工具类

本文介绍了一个实用的日期时间工具类,提供了多种日期时间操作的方法,包括获取指定日期的前后N天、上个月第一天和最后一天、昨日日期等。同时支持时间格式化和解析。

常用的时间转换工具类

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期时间工具类
 */
public class DateTimeUtil {

  // 日期
  public static final String SFM_DATE = "yyyy-MM-dd";

  // 时间
  public static final String SFM_TIME = "HH:mm:ss";

  // 日期时间
  public static final String SFM_DATETIME = "yyyy-MM-dd HH:mm:ss";

  // 昨天
  public static final String YESTERDAY = "yesterday";

  // 上个月
  public static final String LAST_MONTH = "lastMonth";

  public static final String START_TIME = "00:00:00";

  public static final String END_TIME = "23:59:59";

  /**
   * 获取上个月第一天的日期
    */
  public static Date firstDayOfLastMonth() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, -1);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    return calendar.getTime();
  }

  /**
   * 获取上个月最后一天的日期
    */
  public static Date lastDayOfLastMonth() {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.add(Calendar.DATE, -1);
    return calendar.getTime();
  }

  /**
   * 获取昨天的日期
   */
  public static Date yesterday() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DATE, -1);
    return calendar.getTime();
  }

  /**
   * 获取指定日期前后N天的日期
   */
  public static Date chooseDay(Date date, int n) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DATE, n);
    return calendar.getTime();
  }

  /**
   * 将时间转换成默认格式的字符串
   * @param date 时间对象
   */
  public static String formatDate(Date date) {
    SimpleDateFormat sdf = new SimpleDateFormat(SFM_DATETIME);
    return sdf.format(date);
  }

  /**
   * 将时间转换成指定格式的字符串
   * @param date 时间对象
   * @param sfm 时间格式字符串
   */
  public static String formatDate(Date date, String sfm) {
    SimpleDateFormat sdf = new SimpleDateFormat(sfm);
    return sdf.format(date);
  }

  /**
   * 获得当天零时零分零秒
   *
   * @return java.sql.Timestamp对象
   */
  public static Timestamp initDateByDay() {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    java.util.Date date = calendar.getTime();
    Timestamp dateSQL = new java.sql.Timestamp(date.getTime());
    return dateSQL;
  }

  /**
   * 将指定格式的时间字符串转为 Date 对象
   * @param dateStr
   * @param formatStr
   * @return
   */
  public static Date parseDate(String dateStr, String formatStr) {
    SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
    try {
      return sdf.parse(dateStr);
    } catch (ParseException e) {
      throw new ServerException(ErrorEnum.WRONG_ARGUMENTS.append(e.getMessage()));
    }
  }

  /**
   * 获取指定日期所在月份当月的总天数
   * @param date
   * @return
   */
  public static int getDaysOfMonth(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
  }


  /**
   * 获取昨日0点
   * @return
   */
  public static String getStartYesterday() {
    // 获取昨日0点
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_MONTH, -1);
    calendar.set(Calendar.HOUR_OF_DAY, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    return formatDate(calendar.getTime(), SFM_DATETIME);
  }

  /**
   * 获取昨日结束时间
   * @return
   */
  public static String getEndYesterday() {
    // 获取昨日23点
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_MONTH, -1);
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    return formatDate(calendar.getTime(), SFM_DATETIME);
  }

  /**
   * 获取当前时间的前forward时间
   *
   * @param forwardTime 向前多长时间
   * @return
   */
  public static String getBeforeCurrTime(int forwardTime) {
    /* 核心代码 */
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MINUTE, -forwardTime); // 5分钟之前的时间
    Date date = calendar.getTime();
    return formatDate(date, SFM_DATETIME);  // 前五分钟时间
  }


  public static String getStartLastHour(){
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.HOUR_OF_DAY, -1);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);

    return formatDate(calendar.getTime(), SFM_DATETIME);
  }

  public static String getEndLastHour(){
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.HOUR_OF_DAY, -1);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);

    return formatDate(calendar.getTime(), SFM_DATETIME);
  }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值