各种日期处理

各种日期处理


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.springframework.util.StringUtils;

public class DateUtils {

    private static SimpleDateFormat detailDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    private static SimpleDateFormat dayDate = new SimpleDateFormat("yyyy-MM-dd");

    private static final String DETAIL_DATE_START_PREFIX = " 00:00:00";

    private static final String DETAIL_DATE_END_SUFFIX = " 23:59:59";

    /**
     * 获取当前日期
     * @return
     */
    public static String getCurrentTime() {
        Date now = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("MMddHHmmss");
        return dateFormat.format(now);
    }

    /**
     * 获取昨天日期
     * @return
     */
    public static String getYesterdayString() {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, -1);
        Date date = calendar.getTime();
        calendar.setTime(date);
        return dayDate.format(date);
    }

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

    /**
     * 周一
     *
     * @param date
     * @return
     */
    public static Date firstDayOfWeek(Date date) {
        Calendar preDate = Calendar.getInstance();
        preDate.setTime(date);
        if (preDate.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
            preDate.add(Calendar.DAY_OF_WEEK, -1);
        }
        preDate.set(Calendar.DAY_OF_WEEK, 2);
        return preDate.getTime();
    }


    /**
     * 一周前
     *
     * @param curDate
     * @return
     */
    public static Date getPrevWeek(Date curDate) {
        Calendar preDate = Calendar.getInstance();
        preDate.setTime(curDate);
        preDate.set(Calendar.DAY_OF_YEAR, preDate.get(Calendar.DAY_OF_YEAR) - 7);
        return preDate.getTime();
    }

    public static Date getOldDate() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.DATE, -(365 * 2));
        return calendar.getTime();
    }

    /**
     * 获取一月中最大天数
     *
     * @param date
     * @return
     */
    public static int getMaxdayOfTime(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        return c.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    public static long getYesterdayStart() throws ParseException {
        String yesterdayStartString = getYesterdayString() + DETAIL_DATE_START_PREFIX;
        return detailDate.parse(yesterdayStartString).getTime();
    }

    public static long getYesterdayEnd() throws ParseException {
        String yesterdayEndString = getYesterdayString() + DETAIL_DATE_END_SUFFIX;
        return detailDate.parse(yesterdayEndString).getTime();
    }

    public static String getDateString() {
        return detailDate.format(new Date());
    }

    public static String getSimpleDateString(Date date) {
        return dayDate.format(date);
    }

    public static Date parseString2Date(String dateString) throws ParseException {
        return dayDate.parse(dateString);
    }

    public static Date parseString2FullDate(String dateString) throws ParseException {
        return detailDate.parse(dateString);
    }

    /**
     * 获取某年 第某周的周一
     *
     * @param year
     * @param week
     * @return
     */
    public static Date getDateByWeekOfYear(int year, int week) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.WEEK_OF_YEAR, week);
        // return calendar.getTime();
        int day_of_week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if (day_of_week == 0) {
            day_of_week = 7;
        }
        calendar.add(Calendar.DATE, -day_of_week + 1);
        return calendar.getTime();
    }

    public static Date getDateByWeekOfYearPro(int year, int week) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.WEEK_OF_YEAR, week);

        int day_of_week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        if (day_of_week == 0) {
            day_of_week = 7;
        }
        calendar.add(Calendar.DATE, -day_of_week + 1);
        return calendar.getTime();
    }

    public static Date getDateByTaskId(String taskId, boolean lastWeek) throws ParseException {
        // TODO
        if (!StringUtils.isEmpty(taskId)) {
            String[] array = taskId.split("-");
            int year = Integer.valueOf(array[array.length - 2]);
            int week = lastWeek ? Integer.valueOf(array[array.length - 1]) - 1 : Integer.valueOf(array[array.length - 1]);
            return DateUtils.getDateByWeekOfYear(year, week);
        }
        return null;
    }

    public static Date getFirstDayOfMonth(String date) throws NumberFormatException, ParseException {
        if (!StringUtils.isEmpty(date)) {
            String[] array = date.split("-");
            int year = Integer.valueOf(array[array.length - 2]);
            String month = array[array.length - 1].length() == 1 ? ("0" + array[array.length - 1]) : array[array.length - 1];
            return DateUtils.parseString2Date(year + "-" + month + "-" + "01");
        }
        return null;
    }

    /**
     * 月一号
     *
     * @param date
     * @return
     */
    public static Date firstDayOfMonth(Date date) {
        Calendar preDate = Calendar.getInstance();
        preDate.setTime(date);
        preDate.set(Calendar.DAY_OF_MONTH, 1);
        return preDate.getTime();
    }

    /**
     * 季度一号
     *
     * @param date
     * @return
     */
    public static Date firstDayOfQuarter(Date date) {
        Calendar preDate = Calendar.getInstance();
        preDate.setTime(date);
        preDate.set(Calendar.MONTH, preDate.get(Calendar.MONTH) / 3 * 3);
        preDate.set(Calendar.DAY_OF_MONTH, 1);
        return preDate.getTime();
    }


    /**
     * 一月前
     *
     * @param curDate
     * @return
     */
    public static Date previousMonth(Date curDate) {
        Calendar preDate = Calendar.getInstance();
        preDate.setTime(curDate);
        preDate.set(Calendar.DAY_OF_MONTH, 0);
        preDate.setTime(preDate.getTime());
        preDate.set(Calendar.DAY_OF_MONTH, 1);
        return preDate.getTime();
    }

    /**
     * 前一季度
     *
     * @param curDate
     * @return
     */
    public static Date previousQuarter(Date curDate) {
        Calendar preDate = Calendar.getInstance();
        preDate.setTime(curDate);
        preDate.set(Calendar.MONTH, preDate.get(Calendar.MONTH) - 3);
        return preDate.getTime();
    }

    /**
     * 获取当月所有日期
     * @param month
     * @param lengthFlag
     * @return
     */
    private static List<String> getAllDay(Date month, boolean lengthFlag) {
        List<String> list = new ArrayList<String>();
        Calendar cal = Calendar.getInstance();
        cal.setTime(month);
        int maxDate = cal.getActualMaximum(Calendar.DATE);
        if (!lengthFlag) {
            maxDate = cal.get(Calendar.DAY_OF_MONTH);
        }
        cal.set(Calendar.DAY_OF_MONTH, 1);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        for (int i = 0; i < maxDate; i++, cal.add(Calendar.DATE, 1)) {
            Date d = cal.getTime();
            String date = sdf.format(d);
            list.add(date);
        }
        return list;
    }

    /**
     * date是否符合dateFormat格式
     * @param date
     * @param dateFormat
     * @return
     */
    public static boolean isLegalDateString(String date, String dateFormat) {
        if (date != null) {
            SimpleDateFormat format = new SimpleDateFormat(
                    dateFormat);
            format.setLenient(false);
            try {
                format.format(format.parse(date));
            } catch (ParseException e) {
                return false;
            }
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        List<String> list = getAllDay(new Date(), true);
        list.forEach((v) -> {
            System.out.println(v);
        });
        System.out.println(isLegalDateString("2018-08-08 08:08", "yyyy-MM-dd HH:mm:ss"));


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值