整理日常开发常用日期处理工具方法

整理日常开发常用日期处理工具方法

package com.flyorange.util;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @author flyorange
 */
public final class DateUtils {

    public static final String NORMAL_DATE_TIME = "yyyy-MM-dd HH:mm:ss";
    public static final String ONLY_DATE_FORMAT = "yyyy-MM-dd";
    public static final String ONLY_TIME_FORMAT = "HH:mm:ss";

    public static final String SHORT_DATE_TIME = "yyyyMMdd HH:mm:ss";
    public static final String ONLY_SHORT_DATE = "yyyyMMdd";

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

    public DateUtils(){

    }

    /**
     * 日期转换为字符串
     * @param date 要转换的日期
     * @param dateFormat 要转换成的日期格式;如 yyyy-MM-dd HH:mm:ss
     * @return String
     */
    public static String dateToString(Date date,String dateFormat) {
        SimpleDateFormat dateFormat2 = new SimpleDateFormat(dateFormat);
        if (date != null) {
            return dateFormat2.format(date);
        } else {
            return null;
        }
    }

    /**
     * 字符串转日期
     * @param strDate 字符串
     * @param dateFormat 字符串对应的日期格式
     * @return
     */
    public static Date toDateTime(String strDate,String dateFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        try {
            return sdf.parse(strDate);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 获得今天日期
     * @param dateFormat 结果日期的格式
     * @return String
     */
    public static String getToday(String dateFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        return sdf.format(new Date());
    }

    /**
     * 获得N天前后的日期
     * @param days 正N为N天后,负N为N天前
     * @param dateFormat 结果日期格式
     *
     * @return String
     */
    public static String getBeforeDayShort(int days, String dateFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        Calendar c = Calendar.getInstance();
        c.add(Calendar.DATE, days);
        return sdf.format(c.getTime());
    }

    /**
     * 获取传入日期当天开始时间
     * @param date
     * @return
     */
    public static String getDateStart(Date date) {
        return dateToString(date,ONLY_DATE_FORMAT) + BEGIN_TIME;
    }

    /**
     * 获取传入日期当天结束时间
     * @param date
     * @return
     */
    public static String getDateEnd(Date date) {
        return dateToString(date,ONLY_DATE_FORMAT) + END_TIME;
    }

    /**
     * 当前日期向后向前推指定年月日时分秒
     * @param date 传入日期
     * @param target 增加或减少的目标吗,如 年、月、日、时、分、秒
     * @param offset 增加或减少的量
     * @return
     */
    public static Date addTime(Date date, String target, int offset) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        switch(target){
            case "YEAR":
                c.add(Calendar.YEAR, offset);
                break;
            case "MONTH":
                c.add(Calendar.MONTH, offset);
                break;
            case "DAY":
                c.add(Calendar.DAY_OF_MONTH, offset);
                break;
            case "HOUR":
                c.add(Calendar.HOUR, offset);
                break;
            case "MINUTE":
                c.add(Calendar.MINUTE, offset);
                break;
            case "SECOND":
                c.add(Calendar.SECOND, offset);
                break;
            default:
                break;
        }
        return c.getTime();
    }

    /**
     * 当月月初
     * @return
     */
    public static Date curMonthFirstDate() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        calendar.set(Calendar.HOUR_OF_DAY, 00);
        calendar.set(Calendar.MINUTE, 00);
        calendar.set(Calendar.SECOND, 00);
        return calendar.getTime();
    }

    /**
     * 当月月末
     *
     * @return
     */
    public static Date curMonthEndDate() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        return calendar.getTime();
    }

    /**
     * 获取两个时间之间的日期List,String类型
     * @param beginDate 开始时间
     * @param endDate 结束时间
     * @param dateFormat 结果日期格式
     * @return
     */
    public static List<String> getListBetweenDates(Date beginDate, Date endDate, String dateFormat) {
        List<String> date = new ArrayList<String>();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
        date.add(simpleDateFormat.format(beginDate));
        Calendar beginTime = Calendar.getInstance();
        beginTime.setTime(beginDate);
        while (endDate.after(beginTime.getTime())) {
            beginTime.add(Calendar.DAY_OF_MONTH, 1);
            date.add(simpleDateFormat.format(beginTime.getTime()));
        }
        return date;
    }

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值