JAVA 日期工具类(全面,代码可以直接使用)

这是一个比较全面的时间工具类,可供参考!

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.ImmutableMap;
import com.springboot.cloud.msp.common.core.model.DateStyle;
import com.springboot.cloud.msp.common.core.util.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;

/**
 * 日期工具类
 *
 * @author [chen.hao78]
 * @version [1.0, 2022/10/27]
 */
@Slf4j
public class DateUtil {
    /**
     * 判断指定日期属于本年的第几周
     *
     * @throws [异常类型] [异常说明]
     * @param: date
     * @return: int
     */
    public static String weekOfYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.SUNDAY);
        calendar.setTime(date);
        int i = calendar.get(Calendar.WEEK_OF_YEAR);
        DecimalFormat df = new DecimalFormat("00");
        String str = df.format(i);
        return str;
    }

    /**
     * 〈返回指定日期所处周的起始日(周日为起始日)〉
     * @param: date
     * @return: java.util.Date
     * @throws [异常类型] [异常说明]
     */
    public static Date beginOfWeek(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        Calendar calendar1 = cn.hutool.core.date.DateUtil.beginOfWeek(calendar, false);
        String format = cn.hutool.core.date.DateUtil.format(calendar1.getTime(), "yyyy-MM-dd");
        DateTime dateTime = cn.hutool.core.date.DateUtil.parseDate(format);
        return dateTime;
    }

    /**
     * 〈指定日期对应当周最后一天日期〉
     * @param: date
     * @param: isSundayAsLastDay
     * @return: java.util.Date
     * @throws [异常类型] [异常说明]
     */
    public static Date endOfWeek(Date date, boolean isSundayAsLastDay){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        Calendar calendar1 = cn.hutool.core.date.DateUtil.endOfWeek(calendar, isSundayAsLastDay);
        return calendar1.getTime();
    }

    /**
     * 〈获取指定周数之内的日期范围〉
     * @param: weeks
     * @return: java.util.Map<java.lang.String,java.lang.String>
     * @throws [异常类型] [异常说明]
     */
    public static Map<String, String> getTimeRegionForWeek(Integer weeks) {
        Date date = new Date();
        // 当前周
        String minWeek = DateUtil.weekOfYear(date);
        // 当前年份
        int minYear = cn.hutool.core.date.DateUtil.year(date);
        // 当前年周
        String minYearWeek = minYear + minWeek;
        log.debug("minYearWeek==" + minYearWeek);
        // 本周最后一天(周六)偏移weeks周的日期
        DateTime maxWeekDate = cn.hutool.core.date.DateUtil.offsetWeek(DateUtil.endOfWeek(date, false), weeks);
        String maxWeek = DateUtil.weekOfYear(maxWeekDate);
        int maxYear = cn.hutool.core.date.DateUtil.year(maxWeekDate);
        String maxYearWeek = maxYear + maxWeek;
        log.debug("maxYearWeek==" + maxYearWeek);
        // 当前日期
        String minDay = cn.hutool.core.date.DateUtil.today();
        log.debug("minDay===" + minDay);
        // 当前日期加上生产周数后的那一周的最后一天日期
        Calendar maxWeekDateCal = cn.hutool.core.date.DateUtil.calendar(maxWeekDate);
        Date time = cn.hutool.core.date.DateUtil.endOfWeek(maxWeekDateCal, false).getTime();
        String maxDay = cn.hutool.core.date.DateUtil.format(time, "yyyy-MM-dd");
        log.debug("maxDay=" + maxDay);
        return ImmutableMap.of("minYearWeek", minYearWeek, "maxYearWeek", maxYearWeek, "minDay", minDay, "maxDay", maxDay);
    }

    public static int compare(Date date1, Date date2){
        String date1Str = cn.hutool.core.date.DateUtil.format(date1, DatePattern.PURE_DATE_PATTERN);
        String date2Str = cn.hutool.core.date.DateUtil.format(date2, DatePattern.PURE_DATE_PATTERN);
        Date newDate1 = DateUtil.parse(date1Str, DatePattern.PURE_DATE_PATTERN);
        Date newDate2 = DateUtil.parse(date2Str, DatePattern.PURE_DATE_PATTERN);
        return cn.hutool.core.date.DateUtil.compare(newDate1, newDate2);
    }

    public static Boolean isHistory(String dateStr) {
        Date date = DateUtil.parse(dateStr, DatePattern.PURE_DATE_PATTERN);
        Date today = new Date();
        return compare(date, today) < 0;
    }

    /**
     * 日期格式
     */
    public static final String YYYY_MM_DD = "yyyy-MM-dd";

    /**
     * 日期格式
     */
    public static final String YYYYMMDD = "yyyyMMdd";

    /**
     * 日期格式
     */
    public static final String YYYY_MM_DD_HH_MM_SS = YYYY_MM_DD + " HH:mm:ss";

    /**
     * 获取SimpleDateFormat
     *
     * @param parttern 日期格式
     * @return SimpleDateFormat对象
     * @throws RuntimeException 异常:非法日期格式
     */
    public static SimpleDateFormat getDateFormat(String parttern) throws RuntimeException {
        return new SimpleDateFormat(parttern);
    }


    /**
     * 获取日期中的某数值。如获取月份
     *
     * @param date     日期
     * @param dateType 日期格式
     * @return 数值
     */
    public static int getInteger(Date date, int dateType) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(dateType);
    }

    /**
     * 增加日期中某类型的某数值。如增加日期
     *
     * @param date     日期字符串
     * @param dateType 类型
     * @param amount   数值
     * @return 计算后日期字符串
     */
    public static String addInteger(String date, int dateType, int amount) {
        String dateString = null;
        DateStyle dateStyle = getDateStyle(date);
        if (dateStyle != null) {
            Date myDate = stringToDate(date, dateStyle);
            myDate = addInteger(myDate, dateType, amount);
            dateString = dateToString(myDate, dateStyle);
        }
        return dateString;
    }

    /**
     * 增加日期中某类型的某数值。如增加日期
     *
     * @param date     日期
     * @param dateType 类型
     * @param amount   数值
     * @return 计算后日期
     */
    public static Date addInteger(Date date, int dateType, int amount) {
        Date myDate = null;
        if (date != null) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(dateType, amount);
            myDate = calendar.getTime();
        }
        return myDate;
    }

    /**
     * 获取精确的日期
     *
     * @param timestamps 时间long集合
     * @return 日期
     */
    public static Date getAccurateDate(List<Long> timestamps) {
        Date date = null;
        long timestamp = 0;
        Map<Long, long[]> map = new HashMap<Long, long[]>(512);
        List<Long> absoluteValues = new ArrayList<Long>();

        if (timestamps != null && timestamps.size() > 0) {
            if (timestamps.size() > 1) {
                for (int i = 0; i < timestamps.size(); i++) {
                    for (int j = i + 1; j < timestamps.size(); j++) {
                        long absoluteValue = Math.abs(timestamps.get(i) - timestamps.get(j));
                        absoluteValues.add(absoluteValue);
                        long[] timestampTmp = {timestamps.get(i), timestamps.get(j)};
                        map.put(absoluteValue, timestampTmp);
                    }
                }

                long minAbsoluteValue = -1;
                if (!absoluteValues.isEmpty()) {
                    minAbsoluteValue = absoluteValues.get(0);
                }
                for (int i = 0; i < absoluteValues.size(); i++) {
                    for (int j = i + 1; j < absoluteValues.size(); j++) {
                        if (absoluteValues.get(i) > absoluteValues.get(j)) {
                            minAbsoluteValue = absoluteValues.get(j);
                        } else {
                            minAbsoluteValue = absoluteValues.get(i);
                        }
                    }
                }

                if (minAbsoluteValue != -1) {
                    long[] timestampsLastTmp = map.get(minAbsoluteValue);
                    if (absoluteValues.size() > 1) {
                        timestamp = Math.max(timestampsLastTmp[0], timestampsLastTmp[1]);
                    } else if (absoluteValues.size() == 1) {
                        long dateOne = timestampsLastTmp[0];
                        long dateTwo = timestampsLastTmp[1];
                        long max = 100000000000L;
                        if ((Math.abs(dateOne - dateTwo)) < max) {
                            timestamp = Math.max(timestampsLastTmp[0], timestampsLastTmp[1]);
                        } else {
                            long now = System.currentTimeMillis();
                            if (Math.abs(dateOne - now) <= Math.abs(dateTwo - now)) {
                                timestamp = dateOne;
                            } else {
                                timestamp = dateTwo;
                            }
                        }
                    }
                }
            } else {
                timestamp = timestamps.get(0);
            }
        }

        if (timestamp != 0) {
            date = new Date(timestamp);
        }
        return date;
    }

    /**
     * 判断字符串是否为日期字符串
     *
     * @param date 日期字符串
     * @return true or false
     */
    public static boolean isDate(String date) {
        boolean isDate = false;
        if (date != null) {
            if (stringToDate(date) != null) {
                isDate = true;
            }
        }
        return isDate;
    }

    /**
     * 获取日期字符串的日期风格。失敗返回null。
     *
     * @param date 日期字符串
     * @return 日期风格
     */
    public static DateStyle getDateStyle(String date) {
        DateStyle dateStyle = null;
        Map<Long, DateStyle> map = new HashMap<Long, DateStyle>(512);
        List<Long> timestamps = new ArrayList<Long>();
        for (DateStyle style : DateStyle.values()) {
            Date dateTmp = stringToDate(date, style.getValue());
            if (dateTmp != null) {
                timestamps.add(dateTmp.getTime());
                map.put(dateTmp.getTime(), style);
            }
        }
        dateStyle = map.get(getAccurateDate(timestamps).getTime());
        return dateStyle;
    }

    /**
     * 将日期字符串转化为日期。失败返回null。
     *
     * @param date 日期字符串
     * @return 日期
     */
    public static Date stringToDate(String date) {
        DateStyle dateStyle = null;
        return stringToDate(date, dateStyle);
    }

    /**
     * 将日期字符串转化为日期。失败返回null。
     *
     * @param date     日期字符串
     * @param parttern 日期格式
     * @return 日期
     */
    public static Date stringToDate(String date, String parttern) {
        Date myDate = null;
        if (date != null) {
            try {
                myDate = getDateFormat(parttern).parse(date);
            } catch (Exception e) {
            }
        }
        return myDate;
    }

    /**
     * 将日期字符串转化为日期。失败返回null。
     *
     * @param date      日期字符串
     * @param dateStyle 日期风格
     * @return 日期
     */
    public static Date stringToDate(String date, DateStyle dateStyle) {
        Date myDate = null;
        if (dateStyle == null) {
            List<Long> timestamps = new ArrayList<Long>();
            for (DateStyle style : DateStyle.values()) {
                Date dateTmp = stringToDate(date, style.getValue());
                if (dateTmp != null) {
                    timestamps.add(dateTmp.getTime());
                }
            }
            myDate = getAccurateDate(timestamps);
        } else {
            myDate = stringToDate(date, dateStyle.getValue());
        }
        return myDate;
    }

    /**
     * 将日期转化为日期字符串。失败返回null。
     *
     * @param date     日期
     * @param parttern 日期格式
     * @return 日期字符串
     */
    public static String dateToString(Date date, String parttern) {
        String dateString = null;
        if (date != null) {
            try {
                dateString = getDateFormat(parttern).format(date);
            } catch (Exception e) {
            }
        }
        return dateString;
    }

    /**
     * 将日期转化为日期字符串。失败返回null。
     *
     * @param date      日期
     * @param dateStyle 日期风格
     * @return 日期字符串
     */
    public static String dateToString(Date date, DateStyle dateStyle) {
        String dateString = null;
        if (dateStyle != null) {
            dateString = dateToString(date, dateStyle.getValue());
        }
        return dateString;
    }

    /**
     * 将日期字符串转化为另一日期字符串。失败返回null。
     *
     * @param date     旧日期字符串
     * @param parttern 新日期格式
     * @return 新日期字符串
     */
    public static String stringToString(String date, String parttern) {
        return stringToString(date, null, parttern);
    }

    /**
     * 将日期字符串转化为另一日期字符串。失败返回null。
     *
     * @param date      旧日期字符串
     * @param dateStyle 新日期风格
     * @return 新日期字符串
     */
    public static String stringToString(String date, DateStyle dateStyle) {
        return stringToString(date, null, dateStyle);
    }

    /**
     * 将日期字符串转化为另一日期字符串。失败返回null。
     *
     * @param date         旧日期字符串
     * @param olddParttern 旧日期格式
     * @param newParttern  新日期格式
     * @return 新日期字符串
     */
    public static String stringToString(String date, String olddParttern, String newParttern) {
        String dateString = null;
        if (olddParttern == null) {
            DateStyle style = getDateStyle(date);
            if (style != null) {
                Date myDate = stringToDate(date, style.getValue());
                dateString = dateToString(myDate, newParttern);
            }
        } else {
            Date myDate = stringToDate(date, olddParttern);
            dateString = dateToString(myDate, newParttern);
        }
        return dateString;
    }

    /**
     * 将日期字符串转化为另一日期字符串。失败返回null。
     *
     * @param date         旧日期字符串
     * @param olddDteStyle 旧日期风格
     * @param newDateStyle 新日期风格
     * @return 新日期字符串
     */
    public static String stringToString(String date, DateStyle olddDteStyle, DateStyle newDateStyle) {
        String dateString = null;
        if (olddDteStyle == null) {
            DateStyle style = getDateStyle(date);
            dateString = stringToString(date, style.getValue(), newDateStyle.getValue());
        } else {
            dateString = stringToString(date, olddDteStyle.getValue(), newDateStyle.getValue());
        }
        return dateString;
    }

    /**
     * 增加日期的年份。失败返回null。
     *
     * @param date       日期
     * @param yearAmount 增加数量。可为负数
     * @return 增加年份后的日期字符串
     */
    public static String addYear(String date, int yearAmount) {
        return addInteger(date, Calendar.YEAR, yearAmount);
    }

    /**
     * 增加日期的年份。失败返回null。
     *
     * @param date       日期
     * @param yearAmount 增加数量。可为负数
     * @return 增加年份后的日期
     */
    public static Date addYear(Date date, int yearAmount) {
        return addInteger(date, Calendar.YEAR, yearAmount);
    }

    /**
     * 增加日期的月份。失败返回null。
     *
     * @param date       日期
     * @param yearAmount 增加数量。可为负数
     * @return 增加月份后的日期字符串
     */
    public static String addMonth(String date, int yearAmount) {
        return addInteger(date, Calendar.MONTH, yearAmount);
    }

    /**
     * 增加日期的月份。失败返回null。
     *
     * @param date       日期
     * @param yearAmount 增加数量。可为负数
     * @return 增加月份后的日期
     */
    public static Date addMonth(Date date, int yearAmount) {
        return addInteger(date, Calendar.MONTH, yearAmount);
    }

    /**
     * 增加日期的天数。失败返回null。
     *
     * @param date      日期字符串
     * @param dayAmount 增加数量。可为负数
     * @return 增加天数后的日期字符串
     */
    public static String addDay(String date, int dayAmount) {
        return addInteger(date, Calendar.DATE, dayAmount);
    }

    /**
     * 增加日期的天数。失败返回null。
     *
     * @param date      日期
     * @param dayAmount 增加数量。可为负数
     * @return 增加天数后的日期
     */
    public static Date addDay(Date date, int dayAmount) {
        return addInteger(date, Calendar.DATE, dayAmount);
    }

    /**
     * 增加日期的小时。失败返回null。
     *
     * @param date 日期字符串 dayAmount 增加数量。可为负数
     * @return 增加小时后的日期字符串
     */
    public static String addHour(String date, int hourAmount) {
        return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
    }

    /**
     * 增加日期的小时。失败返回null。
     *
     * @param date 日期 dayAmount 增加数量。可为负数
     * @return 增加小时后的日期
     */
    public static Date addHour(Date date, int hourAmount) {
        return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
    }

    /**
     * 增加日期的分钟。失败返回null。
     *
     * @param date 日期字符串 dayAmount 增加数量。可为负数
     * @return 增加分钟后的日期字符串
     */
    public static String addMinute(String date, int hourAmount) {
        return addInteger(date, Calendar.MINUTE, hourAmount);
    }

    /**
     * 增加日期的分钟。失败返回null。
     *
     * @param date 日期 dayAmount 增加数量。可为负数
     * @return 增加分钟后的日期
     */
    public static Date addMinute(Date date, int hourAmount) {
        return addInteger(date, Calendar.MINUTE, hourAmount);
    }

    /**
     * 增加日期的秒钟。失败返回null。
     *
     * @param date 日期字符串 dayAmount 增加数量。可为负数
     * @return 增加秒钟后的日期字符串
     */
    public static String addSecond(String date, int hourAmount) {
        return addInteger(date, Calendar.SECOND, hourAmount);
    }

    /**
     * 增加日期的秒钟。失败返回null。
     *
     * @param date 日期 dayAmount 增加数量。可为负数
     * @return 增加秒钟后的日期
     */
    public static Date addSecond(Date date, int hourAmount) {
        return addInteger(date, Calendar.SECOND, hourAmount);
    }

    /**
     * 获取日期的年份。失败返回0。
     *
     * @param date 日期字符串
     * @return 年份
     */
    public static int getYear(String date) {
        return getYear(stringToDate(date));
    }

    /**
     * 获取日期的年份。失败返回0。
     *
     * @param date 日期
     * @return 年份
     */
    public static int getYear(Date date) {
        return getInteger(date, Calendar.YEAR);
    }

    /**
     * 获取日期的月份。失败返回0。
     *
     * @param date 日期字符串
     * @return 月份
     */
    public static int getMonth(String date) {
        return getMonth(stringToDate(date));
    }

    /**
     * 获取日期的月份。失败返回0。
     *
     * @param date 日期
     * @return 月份
     */
    public static int getMonth(Date date) {
        return getInteger(date, Calendar.MONTH);
    }

    /**
     * 获取日期的天数。失败返回0。
     *
     * @param date 日期字符串
     * @return 天
     */
    public static int getDay(String date) {
        return getDay(stringToDate(date));
    }

    /**
     * 获取日期的天数。失败返回0。
     *
     * @param date 日期
     * @return 天
     */
    public static int getDay(Date date) {
        return getInteger(date, Calendar.DATE);
    }

    /**
     * 获取日期的小时。失败返回0。
     *
     * @param date 日期字符串
     * @return 小时
     */
    public static int getHour(String date) {
        return getHour(stringToDate(date));
    }

    /**
     * 获取日期的小时。失败返回0。
     *
     * @param date 日期
     * @return 小时
     */
    public static int getHour(Date date) {
        return getInteger(date, Calendar.HOUR_OF_DAY);
    }

    /**
     * 获取日期的分钟。失败返回0。
     *
     * @param date 日期字符串
     * @return 分钟
     */
    public static int getMinute(String date) {
        return getMinute(stringToDate(date));
    }

    /**
     * 获取日期的分钟。失败返回0。
     *
     * @param date 日期
     * @return 分钟
     */
    public static int getMinute(Date date) {
        return getInteger(date, Calendar.MINUTE);
    }

    /**
     * 获取日期的秒钟。失败返回0。
     *
     * @param date 日期字符串
     * @return 秒钟
     */
    public static int getSecond(String date) {
        return getSecond(stringToDate(date));
    }

    /**
     * 获取日期的秒钟。失败返回0。
     *
     * @param date 日期
     * @return 秒钟
     */
    public static int getSecond(Date date) {
        return getInteger(date, Calendar.SECOND);
    }

    /**
     * 获取日期 。默认yyyy-MM-dd格式。失败返回null。
     *
     * @param date 日期字符串
     * @return 日期
     */
    public static String getDate(String date) {
        return stringToString(date, DateStyle.YYYY_MM_DD);
    }

    /**
     * 获取日期。默认yyyy-MM-dd格式。失败返回null。
     *
     * @param date 日期
     * @return 日期
     */
    public static String getDate(Date date) {
        return dateToString(date, DateStyle.YYYY_MM_DD);
    }

    /**
     * 获取日期。默认yyyy年MM月dd日格式。失败返回null。
     *
     * @param date
     * @return
     */
    public static String getDateFormat(Date date) {
        return dateToString(date, DateStyle.YYYY_MM_DD_CC);
    }

    /**
     * 获取日期。默认yyyy-MM-dd HH:mm:ss格式。失败返回null。
     *
     * @param date 日期
     * @return 日期
     */
    public static String getDateTime(Date date) {
        return dateToString(date, DateStyle.YYYY_MM_DD_HH_MM_SS);
    }

    /**
     * 获取日期。默认mm格式。失败返回null。
     *
     * @param date 日期
     * @return 日期
     */
    public static String getMM(Date date) {
        return dateToString(date, "MM");
    }

    /**
     * 获取日期。默认yyyyMMdd。
     *
     * @param date 日期
     * @return 日期
     */
    public static String getDate1(Date date) {
        return dateToString(date, "yyyyMMdd");
    }

    /**
     * 获取往年年份。默认yyyy格式。失败返回null。
     *
     * @param date
     * @param num
     * @return
     */
    public static Integer getDateYear(Date date, Integer num) {

        return Integer.parseInt(dateToString(date, DateStyle.YYYY)) + num;
    }

    /**
     * 获取日期的时间。默认HH:mm:ss格式。失败返回null。
     *
     * @param date 日期字符串
     * @return 时间
     */
    public static String getTime(String date) {
        return stringToString(date, DateStyle.HH_MM_SS);
    }

    /**
     * 获取日期的时间。默认HH:mm:ss格式。失败返回null。
     *
     * @param date 日期
     * @return 时间
     */
    public static String getTime(Date date) {
        return dateToString(date, DateStyle.HH_MM_SS);
    }


    /**
     * 获取两个日期相差的天数
     *
     * @param date      日期字符串
     * @param otherDate 另一个日期字符串
     * @return 相差天数
     */
    public static int getIntervalDays(String date, String otherDate) {
        return getIntervalDays(stringToDate(date), stringToDate(otherDate));
    }

    /**
     * @param date      日期
     * @param otherDate 另一个日期
     * @return 相差天数
     */
    public static int getIntervalDays(Date date, Date otherDate) {
        date = DateUtil.stringToDate(DateUtil.getDate(date));
        long time = Math.abs(date.getTime() - otherDate.getTime());
        return (int) (time / (24 * 60 * 60 * 1000));
    }

    /**
     * @param
     * @return nameEnShort
     */
    public static Date parse(String dateStr) {
        return parse(dateStr, YYYY_MM_DD, null);
    }

    /**
     * @param
     * @return nameEnShort
     */
    public static Date parse(String dateStr, String pattern) {
        return parse(dateStr, pattern, null);
    }

    /**
     * @param
     * @return nameEnShort
     */
    public static Date parse(String dateStr, String pattern, Date defaultValue) {
        if (dateStr == null || "".equals(dateStr)) {
            return defaultValue;
        }

        SimpleDateFormat format = new SimpleDateFormat(pattern);
        try {
            return format.parse(dateStr);
        } catch (ParseException e) {
            return defaultValue;
        }
    }

    /**
     * @param
     * @return nameEnShort
     */
    public static String format(Date date) {
        return format(date, YYYY_MM_DD);
    }

    /**
     * @param
     * @return nameEnShort
     */
    public static String format(Date date, String pattern) {
        if (date != null) {
            SimpleDateFormat format = new SimpleDateFormat(pattern);
            return format.format(date);
        } else {
            return null;
        }
    }

    /**
     * @param
     * @return nameEnShort
     */
    public static Date addDay1(Date date, int day) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DAY_OF_MONTH, day);

        return c.getTime();
    }

    /**
     * @param date
     * @return nameEnShort
     */
    public static Date addMonth1(Date date, int month) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.MONTH, month);

        return c.getTime();
    }

    /**
     * 获取昨天的日期
     *
     * @return Date 返回类型
     * @Title getYesterday
     */
    public static Date getYesterday() {
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        date = calendar.getTime();
        return date;
    }

    /**
     * 获取昨天的日期
     *
     * @return Date 返回类型
     * @Title getYesterday
     */
    public static Date getSevenDaysAgo() {
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, -7);
        date = calendar.getTime();
        return date;
    }

    /**
     * 获取n天以前的日期
     *
     * @param day
     * @return
     */
    public static Date getDaysAgo(int day) {
        Date date = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, -1 * day);
        date = calendar.getTime();
        return date;
    }

    /**
     * 带服务器时区的时间日期
     *
     * @return
     */
    public static Date getLocalDateTime() {
        LocalDateTime localDateTime = LocalDateTime.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        Date date = Date.from(instant);
        return date;
    }

    /**
     * @param date1
     * @param date2
     * @Description: 比较两个时间的大小
     * Date: 2020-02-22 10:12:10
     */
    public static boolean compareDate(Date date1, Date date2) {
        if (date1.before(date2)) {
            return false;
        } else if (date1.after(date2)) {
            return true;
        } else {
            return true;
        }
    }

    /**
     * 判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
     *
     * @param nowTime   当前时间
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     */
    public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
        if (nowTime.getTime() == startTime.getTime() || nowTime.getTime() == endTime.getTime()) {
            return true;
        }
        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);

        Calendar begin = Calendar.getInstance();
        begin.setTime(startTime);

        Calendar end = Calendar.getInstance();
        end.setTime(endTime);

        if (date.after(begin) && date.before(end)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 获得当前日期 yyyy-MM-dd HH:mm:ss
     *
     * @return 2019-11-19 14:12:40
     */
    public static Date getDateCurrentTime(String str) {
        // 小写的hh取得12小时,大写的HH取的是24小时
        SimpleDateFormat df = new SimpleDateFormat(str);
        Date date = new Date();
        try {
            date = df.parse(df.format(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    public static Date getDateTime(String str) {
        // 小写的hh取得12小时,大写的HH取的是24小时
        SimpleDateFormat df = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
        Date date = new Date();
        try {
            date = df.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 传入格式 yyyyMMdd
     * @param date 传入格式 yyyyMMdd
     * @return  返回格式yyyy-MM-dd hh:mm:ss
     */
    public static String getTimeStamp(String date) {
        String y = date.substring(0, 4);
        String m = date.substring(4, 6);
        String d = date.substring(6, 8);
        StringBuffer sf = new StringBuffer();
        sf.append(y).append("-").append(m).append("-").append(d).append(" ").append("00:00:00");
        long ss = stringToDate(sf.toString()).getTime();
        return String.valueOf(ss);
    }

    /**
     * 传入格式 yyyyMMdd
     * @param date 传入格式 yyyyMMdd
     * @return  返回格式yyyy-MM-dd
     */
    public static String getDayStamp(String date) {
        String y = date.substring(0, 4);
        String m = date.substring(4, 6);
        String d = date.substring(6, 8);
        StringBuffer sf = new StringBuffer();
        sf.append(y).append("-").append(m).append("-").append(d);
        return sf.toString();
    }

    /**
     * 日期字符串或时间戳处理,
     * yyyy-MM-dd转成yyyyMMdd
     * 时间戳数字转换yyyyMMdd
     * @param date
     * @return 返回 yyyyMMdd
     */
    public static String dateStringFormt(String date) {
        if (ObjectUtil.isEmpty(date)) {
            return "";
        }
        if (date.indexOf("-") > 0) {
            return date.replaceAll("-", "").substring(0, 8);
        }
        if (StringUtils.isNumeric(date) && date.length() > 8) {
            Date date2 = DateUtils.getDate(Long.parseLong(date));
            String dataStr = com.springboot.cloud.msp.common.core.util.DateUtil.dateToString(date2, com.springboot.cloud.msp.common.core.util.DateUtil.YYYYMMDD);
            // System.out.println(date + "==>日期转换:" + dataStr);
            return dataStr;
        }
        return date;
    }

    /**
     * 时间戳转日期
     *
     * @param s
     * @return
     */
    public static Date transForDate(Long s) {
        if (s == null) {
            s = (long) 0;
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date temp = null;
        if (s != null) {
            try {
                String str = sdf.format(s);
                temp = sdf.parse(str);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        return temp;
    }

    /**
     * 取得指定日期是多少周
     * 最后一周跨年,则将这周算作下一年第一周
     */
    public static String getWeekStrOfYear(Date date, int weekFirstDay) {
        Calendar c = new GregorianCalendar();
        c.setFirstDayOfWeek(weekFirstDay);
        c.setMinimalDaysInFirstWeek(1);
        c.setTime(date);
        Calendar c2 = new GregorianCalendar();
        c2.setTime(getLastDayOfWeek(c.getTime(), weekFirstDay));
        return c2.get(Calendar.YEAR) + StringUtils.leftPad(c.get(Calendar.WEEK_OF_YEAR) + "", 2, "0");
    }

    /**
     * 取得指定日期所在周的最后一天
     *
     * @param date
     * @param weekFirstDay Calendar.MONDAY,Calendar.SUNDAY
     * @return
     */
    public static Date getLastDayOfWeek(Date date, int weekFirstDay) {
        Calendar c = new GregorianCalendar();
        c.setFirstDayOfWeek(weekFirstDay);
        c.setTime(date);
        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
        return c.getTime();
    }

    /**
     * 得到某年某周的最后一天
     *
     * @param year
     * @param week
     * @param weekFirstDay Calendar.MONDAY,Calendar.SUNDAY
     * @return
     */
    public static Date getLastDayOfWeek(int year, int week, int weekFirstDay) {
        Calendar c = new GregorianCalendar();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, Calendar.JANUARY);
        c.set(Calendar.DATE, 1);

        Calendar cal = (GregorianCalendar) c.clone();
        cal.add(Calendar.DATE, (week - 1) * 7);

        return getLastDayOfWeek(cal.getTime(), weekFirstDay);
    }

    /**
     * 根据日期字符串判断当月第几周
     *
     * @param str
     * @return
     * @throws Exception
     */
    public static int getWeek(String str) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(str);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        //第几周
        int week = calendar.get(Calendar.WEEK_OF_YEAR);
        //第几天,从周日开始
       // int day = calendar.get(Calendar.DAY_OF_WEEK);
        return week;
    }

    //时间区间补全方法
    public static List<String> findDates(String beginTime, int num)
            throws ParseException {
        List<String> allDate = new ArrayList();
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        String endTime = getOtherTime(beginTime+ " 00:00:00", num);
        Date dBegin = sdf.parse(beginTime);
        Date dEnd = sdf.parse(endTime);
        allDate.add(sdf.format(dBegin)); //.replaceAll("-",""))
        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(dBegin);
        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(dEnd);
        // 测试此日期是否在指定日期之后
        while (dEnd.after(calBegin.getTime())) {
            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
            allDate.add(sdf.format(calBegin.getTime())); //.replaceAll("-","")
        }
        return allDate;
    }

    //时间区间补全方法
    public static List<String> findDates_1(String beginTime, String endTime)
            throws ParseException {
        List<String> allDate = new ArrayList();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        Date dBegin = sdf.parse(beginTime+ " 00:00:00");
        Date dEnd = sdf.parse(endTime+ " 00:00:00");
        allDate.add(sdf.format(dBegin)); //.replaceAll("-",""))
        Calendar calBegin = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calBegin.setTime(dBegin);
        Calendar calEnd = Calendar.getInstance();
        // 使用给定的 Date 设置此 Calendar 的时间
        calEnd.setTime(dEnd);
        // 测试此日期是否在指定日期之后
        while (dEnd.after(calBegin.getTime())) {
            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
            calBegin.add(Calendar.DAY_OF_MONTH, 1);
            allDate.add(sdf.format(calBegin.getTime())); //.replaceAll("-","")
        }
        return allDate;
    }


    /**
     *
     * @param data yyyy-MM-dd
     * @return  yyyy-MM-dd
     */
    public static String getOtherTime(String data,int num){
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();

        //过去七天
        c.setTime(getDateTime(data+ " 00:00:00"));
        c.add(Calendar.DATE, num);
        Date d = c.getTime();
        String day = format.format(d);
        return day;
    }

    /**
     *
     * @param data
     * @param num
     * @return  MM.dd
     */
    public static String getOtherTime1(String data,int num){
        SimpleDateFormat format = new SimpleDateFormat("MM.dd");
        Calendar c = Calendar.getInstance();

        //过去七天
        c.setTime(getDateTime(data));
        c.add(Calendar.DATE, num);
        Date d = c.getTime();
        String day = format.format(d);
        return day;
    }

    /**
     *
     * @param data
     * @param num
     * @return  yyyyMMdd
     */
    public static Integer getOtherTime2(String data,int num){
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        Calendar c = Calendar.getInstance();

        //过去七天
        c.setTime(getDateTime(data));
        c.add(Calendar.DATE, num);
        Date d = c.getTime();
        String day = format.format(d);
        return StringUtils.isNotEmpty(day) ? Integer.parseInt(day): 0;
    }

    /**
     * 统计时间段
     * @param data yyyy-MM-dd
     * @param num
     * @return
     */
    public static String getOtherTimeAnd(String data,int num){
        String startTime = data.substring(5,10).replaceAll("-","\\.");
        String endTime = getOtherTime1(data ,num);
        StringBuffer sf = new StringBuffer();
        sf.append(startTime).append("~").append(endTime.replaceAll("-",""));
        return sf.toString();
    }


    /**
     * 获取当天为周几
     * @param date yyyy-MM-dd
     * @return
     */
    public static Integer getDayWeek(String date){
        String endTime = date + " 00:00:00";
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getDateTime(endTime));
        int weekIdx = calendar.get(Calendar.DAY_OF_WEEK) - 1;

        return weekIdx;
    }


    /**
     * 获取某月的最后一天
     *
     */
    public static String getLastDayOfMonth(int year,int month){
        Calendar cal = Calendar.getInstance();
        //设置年份
        cal.set(Calendar.YEAR,year);
        //设置月份
        cal.set(Calendar.MONTH, month);
        //获取当月最小值
        int lastDay = cal.getMinimum(Calendar.DAY_OF_MONTH);
        //设置日历中的月份,当月+1月-1天=当月最后一天
        cal.set(Calendar.DAY_OF_MONTH, lastDay-1);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("MM.dd");
        String lastDayOfMonth = sdf.format(cal.getTime());
        return lastDayOfMonth;
    }

    /**
     *  获取某月的最后一天
     * @param year
     * @param month
     * @return  yyyy-MM-dd
     */
    public static String getLastDayOfMonthyyyyMMdd(int year,int month){
        Calendar cal = Calendar.getInstance();
        //设置年份
        cal.set(Calendar.YEAR,year);
        //设置月份
        cal.set(Calendar.MONTH, month);
        //获取当月最小值
        int lastDay = cal.getMinimum(Calendar.DAY_OF_MONTH);
        //设置日历中的月份,当月+1月-1天=当月最后一天
        cal.set(Calendar.DAY_OF_MONTH, lastDay-1);
        //格式化日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String lastDayOfMonth = sdf.format(cal.getTime());
        return lastDayOfMonth;
    }

    /**
     * 获取上一月或下一月
     * time yyyy-MM-dd hh:mm:ss
     * @return
     */
    public static String getPreMonth(String time,int num) {
        Calendar ca = Calendar.getInstance();//得到一个Calendar的实例
        ca.setTime(getDateTime(time));   //设置时间为当前时间
     //   ca.add(Calendar.YEAR, +1); //年份+1
         ca.add(Calendar.MONTH, num); // 月份-1
        Date date = ca.getTime();
        String mm = getMM(date);

        return mm;
    }


    public static void main(String[] args) throws ParseException,Exception {
		/*String nowDay = "2020-11-15 12:12:11";
		String startDay = "2020-11-15 00:00:00";
		String endDay = "2020-12-15 00:00:00";

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date nowDate = sdf.parse(nowDay);
		Date startDate = sdf.parse(startDay);
		Date endDate = sdf.parse(endDay);*/
      /*  String day = "20161124";
        String y = day.substring(0, 4);
        String m = day.substring(4, 6);
        String d = day.substring(6, 8);
        System.err.println("y:" + y);
        System.err.println("m:" + m);
        System.err.println("d:" + d);
        System.err.println("day:" + getTimeStamp(day));

        Date date = transForDate(1640793600000L);
        System.err.println("9999>>>>" + date);

        String d1 = getDate1(new Date());
        System.err.println("777>>>>" + d1);

        System.err.println("时间: " + getWeek("2022-1-30"));*/

/*        System.err.println("时间补全:" + findDates("2022-02-01",7));
      //  System.err.println("8888888:" + getOtherTime("2022-11-01 00:00:00",8));

        System.err.println("22222>>>>" +getOtherTimeAnd("2022-02-01",7));
        System.err.println("5555>>>>" +getDayWeek("2022-11-05"));

        System.err.println("getLastDayOfMonth>>>>" +getLastDayOfMonth(2022,9));
        System.err.println("getMonthPreDay>>>>" +getPreMonth("2020-12-15 12:12:11",1));
        System.err.println("dateToString>>>>" +dateToString(new Date(),"yyyy-MM-dd"));

        System.err.println("5555>>>>" + getOtherTime("2022-11-16 00:00:00",2));

        System.err.println("周:"+getDayWeek("2022-11-18"));
        System.err.println("年:"+DateUtil.dateToString(new Date(),"yyyy"));
        System.err.println("年11:"+"20221205".substring(0,4));*/

/*        List<String> findDates = DateUtil.findDates(DateUtil.getDayStamp("2022-11-28"), 1);
        System.err.println("dddd>>>>"+findDates);*/

        String  s = getOtherTime1("2022-11-28 00:00:00",0);
        System.err.println("dddd>>>" + s);

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
package com.hexiang.utils; /** * @(#)DateUtil.java * * * @author kidd * @version 1.00 2007/8/8 */ import java.util.*; import java.text.*; import java.sql.Timestamp; public class DateUtils { /** * 时间范围:年 */ public static final int YEAR = 1; /** * 时间范围:季度 */ public static final int QUARTER = 2; /** * 时间范围:月 */ public static final int MONTH = 3; /** * 时间范围:旬 */ public static final int TENDAYS = 4; /** * 时间范围:周 */ public static final int WEEK = 5; /** * 时间范围:日 */ public static final int DAY = 6; /* 基准时间 */ private Date fiducialDate = null; private Calendar cal = null; private DateUtils(Date fiducialDate) { if (fiducialDate != null) { this.fiducialDate = fiducialDate; } else { this.fiducialDate = new Date(System.currentTimeMillis()); } this.cal = Calendar.getInstance(); this.cal.setTime(this.fiducialDate); this.cal.set(Calendar.HOUR_OF_DAY, 0); this.cal.set(Calendar.MINUTE, 0); this.cal.set(Calendar.SECOND, 0); this.cal.set(Calendar.MILLISECOND, 0); this.fiducialDate = this.cal.getTime(); } /** * 获取DateHelper实例 * * @param fiducialDate * 基准时间 * @return Date */ public static DateUtils getInstance(Date fiducialDate) { return new DateUtils(fiducialDate); } /** * 获取DateHelper实例, 使用当前时间作为基准时间 * * @return Date */ public static DateUtils getInstance() { return new DateUtils(null); } /** * 获取年的第一天 * * @param offset * 偏移量 * @return Date */ public Date getFirstDayOfYear(int offset) { cal.setTime(this.fiducialDate); cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + offset); cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Calendar.DAY_OF_MONTH, 1); return cal.getTime(); } /** * 获取年的最后一天 * * @param offset * 偏移量 * @return Date */ public Date getLastDayOfYear(int offset) { cal.setTime(this.fiducialDate); cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + offset); cal.set(Calendar.MONTH, Calendar.DECEMBER); cal.set(Calendar.DAY_OF_MONTH, 31); return cal.getTime(); } /** * 获取季度的第一天 * * @param offset * 偏移量 * @return Date */ public Date getFirstDayOfQuarter(int offset) { cal.setTime(this.fiducialDate); cal.add(Calendar.MONTH, offset * 3); int mon = cal.get(Calendar.MONTH); if (mon >= Calendar.JANUARY && mon = Calendar.APRIL && mon = Calendar.JULY && mon = Calendar.OCTOBER && mon = Calendar.JANUARY && mon = Calendar.APRIL && mon = Calendar.JULY && mon = Calendar.OCTOBER && mon = 21) { day = 21; } else if (day >= 11) { day = 11; } else { day = 1; } if (offset > 0) { day = day + 10 * offset; int monOffset = day / 30; day = day % 30; cal.add(Calendar.MONTH, monOffset); cal.set(Calendar.DAY_OF_MONTH, day); } else { int monOffset = 10 * offset / 30; int dayOffset = 10 * offset % 30; if ((day + dayOffset) > 0) { day = day + dayOffset; } else { monOffset = monOffset - 1; day = day - dayOffset - 10; } cal.add(Calendar.MONTH, monOffset); cal.set(Calendar.DAY_OF_MONTH, day); } return cal.getTime(); } /** * 获取旬的最后一天 * * @param offset * 偏移量 * @return Date */ public Date getLastDayOfTendays(int offset) { Date date = getFirstDayOfTendays(offset + 1); cal.setTime(date); cal.add(Calendar.DAY_OF_MONTH, -1); return cal.getTime(); } /** * 获取周的第一天(MONDAY) * * @param offset * 偏移量 * @return Date */ public Date getFirstDayOfWeek(int offset) { cal.setTime(this.fiducialDate); cal.add(Calendar.DAY_OF_MONTH, offset * 7); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return cal.getTime(); } /** * 获取周的最后一天(SUNDAY) * * @param offset * 偏移量 * @return Date */ public Date getLastDayOfWeek(int offset) { cal.setTime(this.fiducialDate); cal.add(Calendar.DAY_OF_MONTH, offset * 7); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.add(Calendar.DAY_OF_MONTH, 6); return cal.getTime(); } /** * 获取指定时间范围的第一天 * * @param dateRangeType * 时间范围类型 * @param offset * 偏移量 * @return Date */ public Date getFirstDate(int dateRangeType, int offset) { return null; } /** * 获取指定时间范围的最后一天 * * @param dateRangeType * 时间范围类型 * @param offset * 偏移量 * @return Date */ public Date getLastDate(int dateRangeType, int offset) { return null; } /** * 根据日历的规则,为基准时间添加指定日历字段的时间量 * * @param field * 日历字段, 使用Calendar类定义的日历字段常量 * @param offset * 偏移量 * @return Date */ public Date add(int field, int offset) { cal.setTime(this.fiducialDate); cal.add(field, offset); return cal.getTime(); } /** * 根据日历的规则,为基准时间添加指定日历字段的单个时间单元 * * @param field * 日历字段, 使用Calendar类定义的日历字段常量 * @param up * 指定日历字段的值的滚动方向。true:向上滚动 / false:向下滚动 * @return Date */ public Date roll(int field, boolean up) { cal.setTime(this.fiducialDate); cal.roll(field, up); return cal.getTime(); } /** * 把字符串转换为日期 * * @param dateStr * 日期字符串 * @param format * 日期格式 * @return Date */ public static Date strToDate(String dateStr, String format) { Date date = null; if (dateStr != null && (!dateStr.equals(""))) { DateFormat df = new SimpleDateFormat(format); try { date = df.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } } return date; } /** * 把字符串转换为日期日期的格式为yyyy-MM-dd HH:ss * * @param dateStr * 日期字符串 * @return Date */ public static Date strToDate(String dateStr) { Date date = null; if (dateStr != null && (!dateStr.equals(""))) { if (dateStr.matches("\\d{4}-\\d{1,2}-\\d{1,2}")) { dateStr = dateStr + " 00:00"; } else if (dateStr.matches("\\d{4}-\\d{1,2}-\\d{1,2} \\d{1,2}")) { dateStr = dateStr + ":00"; } else { System.out.println(dateStr + " 格式不正确"); return null; } DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:ss"); try { date = df.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } } return date; } /** * 把日期转换为字符串 * * @param date * 日期实例 * @param format * 日期格式 * @return Date */ public static String dateToStr(Date date, String format) { return (date == null) ? "" : new SimpleDateFormat(format).format(date); } public static String dateToStr(Date date) { return (date == null) ? "" : new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(date); } /** * 取得当前日期 年-月-日 * * @return Date */ public static String getCurrentDate() { DateFormat f = new SimpleDateFormat("yyyy-MM-dd"); return f.format(Calendar.getInstance().getTime()); } public static void main(String[] args) { DateUtils dateHelper = DateUtils.getInstance(); /* Year */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfYear(" + i + ") = " + dateHelper.getFirstDayOfYear(i)); System.out.println("LastDayOfYear(" + i + ") = " + dateHelper.getLastDayOfYear(i)); } /* Quarter */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfQuarter(" + i + ") = " + dateHelper.getFirstDayOfQuarter(i)); System.out.println("LastDayOfQuarter(" + i + ") = " + dateHelper.getLastDayOfQuarter(i)); } /* Month */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfMonth(" + i + ") = " + dateHelper.getFirstDayOfMonth(i)); System.out.println("LastDayOfMonth(" + i + ") = " + dateHelper.getLastDayOfMonth(i)); } /* Week */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfWeek(" + i + ") = " + dateHelper.getFirstDayOfWeek(i)); System.out.println("LastDayOfWeek(" + i + ") = " + dateHelper.getLastDayOfWeek(i)); } /* Tendays */ for (int i = -5; i <= 5; i++) { System.out.println("FirstDayOfTendays(" + i + ") = " + dateHelper.getFirstDayOfTendays(i)); System.out.println("LastDayOfTendays(" + i + ") = " + dateHelper.getLastDayOfTendays(i)); } } /** * 取当前日期的字符串形式,"XXXX年XX月XX日" * * @return java.lang.String */ public static String getPrintDate() { String printDate = ""; Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); printDate += calendar.get(Calendar.YEAR) + "年"; printDate += (calendar.get(Calendar.MONTH) + 1) + "月"; printDate += calendar.get(Calendar.DATE) + "日"; return printDate; } /** * 将指定的日期字符串转化为日期对象 * * @param dateStr * 日期字符串 * @return java.util.Date */ public static Date getDate(String dateStr, String format) { if (dateStr == null) { return new Date(); } if (format == null) { format = "yyyy-MM-dd"; } SimpleDateFormat sdf = new SimpleDateFormat(format); try { Date date = sdf.parse(dateStr); return date; } catch (Exception e) { return null; } } /** * 从指定Timestamp中得到相应的日期的字符串形式 日期"XXXX-XX-XX" * * @param dateTime * @return 、String */ public static String getDateFromDateTime(Timestamp dateTime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(dateTime).toString(); } /** * 得到当前时间 return java.sql.Timestamp * * @return Timestamp */ public static Timestamp getNowTimestamp() { long curTime = System.currentTimeMillis(); return new Timestamp(curTime); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

除不掉的灰色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值