Date工具类

Posted hongqingfu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Date工具类相关的知识,希望对你有一定的参考价值。

java 时间工具类

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.apache.commons.lang3.StringUtils;

public class DateUtils {
    public static final String PATTERN_DATE = "yyyy-MM-dd";
    public static final String PATTERN_DATE2 = "MM-dd";
    public static final String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";
    public static final String PATTERN_DATETIME_ios8601 = "yyyy-MM-dd‘T‘HH:mm:ss‘Z‘";

    public DateUtils() {
    }

    public static Date date(int year, int month, int day) {
        return date(year, month, day, 0, 0, 0);
    }

    public static Date date(int year, int month, int day, int hour, int minute, int second) {
        Calendar calendar = Calendar.getInstance();
        calendar.setLenient(false);
        calendar.set(year, month, day, hour, minute, second);
        calendar.set(14, 0);
        return calendar.getTime();
    }

    public static Date getOneDayEndTime(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(11, 23);
        cal.set(12, 59);
        cal.set(13, 59);
        cal.set(14, 999);
        return cal.getTime();
    }

    public static Date getOneDayEndTimeNoMill(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(11, 23);
        cal.set(12, 59);
        cal.set(13, 59);
        return cal.getTime();
    }

    public static String getOneDay(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(11, 23);
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return dateFormat.format(cal.getTime());
    }

    public static Date getOneDayStartTime(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(11, 0);
        cal.set(12, 0);
        cal.set(13, 0);
        cal.set(14, 0);
        return cal.getTime();
    }

    public static Date getOneDayStartTimeNoMill(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(11, 0);
        cal.set(12, 0);
        return cal.getTime();
    }

    public static Date parseDate(String string, String pattern) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        sdf.setLenient(false);
        return sdf.parse(string);
    }

    public static Date parseDate(String string, String pattern, TimeZone timeZone) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        sdf.setTimeZone(timeZone);
        sdf.setLenient(false);
        return sdf.parse(string);
    }

    public static int getWeekOfDateNum(Date dt) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(dt);
        int w = cal.get(7) - 1;
        if (w < 0) {
            w = 0;
        }

        return w;
    }

    public static String getWeekOfDate(Date dt) {
        String[] weekDays = new String[]{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        int w = getWeekOfDateNum(dt);
        return weekDays[w];
    }

    public static String getMondayOfWeek() {
        return getMondayOfWeek(new Date(), "yyyy-MM-dd");
    }

    public static String getMondayOfWeek(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        calendar.setFirstDayOfWeek(2);
        int dayWeek = calendar.get(7);
        if (1 == dayWeek) {
            calendar.add(5, -1);
        }

        int day = calendar.get(7);
        calendar.add(5, calendar.getFirstDayOfWeek() - day);
        return dateFormat.format(calendar.getTime());
    }

    public static String getSundayOfWeek() {
        return getSundayOfWeek(new Date(), "yyyy-MM-dd");
    }

    public static String getSundayOfWeek(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        calendar.setFirstDayOfWeek(2);
        int dayWeek = calendar.get(7);
        if (1 == dayWeek) {
            calendar.add(5, -1);
        }

        int day = calendar.get(7);
        calendar.add(5, calendar.getFirstDayOfWeek() - day + 6);
        return dateFormat.format(calendar.getTime());
    }

    public static String getFirstDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(5, 1);
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        return dateFormat.format(calendar.getTime());
    }

    public static String getFirstDayOfMonth(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(5, 1);
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        return dateFormat.format(calendar.getTime());
    }

    public static String getLastDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        calendar.set(5, 1);
        calendar.roll(5, -1);
        return dateFormat.format(calendar.getTime());
    }

    public static String getLastDayOfMonth(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        calendar.setTime(date);
        calendar.set(5, 1);
        calendar.roll(5, -1);
        return dateFormat.format(calendar.getTime());
    }

    public static Date addDays(Date date, int amount) {
        return add(date, 5, amount);
    }

    public static Date addWeeks(Date date, int amount) {
        return add(date, 3, amount);
    }

    public static Date addMonths(Date date, int amount) {
        return add(date, 2, amount);
    }

    public static Date addYears(Date date, int amount) {
        return add(date, 1, amount);
    }

    public static Date addHours(Date date, int amount) {
        return add(date, 11, amount);
    }

    public static Date addMinutes(Date date, int amount) {
        return add(date, 12, amount);
    }

    public static Date addSeconds(Date date, int amount) {
        return add(date, 13, amount);
    }

    public static Date addMilliseconds(Date date, int amount) {
        return add(date, 14, amount);
    }

    private static Date add(Date date, int calendarField, int amount) {
        if (date == null) {
            throw new IllegalArgumentException("The date must not be null");
        } else {
            Calendar c = Calendar.getInstance();
            c.setTime(date);
            c.add(calendarField, amount);
            return c.getTime();
        }
    }

    public static String formatDate(Date date, DateEnum fs) {
        DateEnum pattern = fs;
        if (date == null) {
            return "";
        } else {
            if (fs == null) {
                pattern = DateEnum.YYYYMMDD_BYSEP;
            }

            SimpleDateFormat sdf = new SimpleDateFormat(pattern.getValue());
            return sdf.format(date);
        }
    }

    public static String getNow(DateEnum fs) {
        return formatDate(now(), fs);
    }

    public static Date parseDate(String date, DateEnum fs) {
        if (date != null && date.length() != 0) {
            SimpleDateFormat formatter = new SimpleDateFormat(fs.getValue());

            try {
                return formatter.parse(date);
            } catch (ParseException var4) {
                var4.printStackTrace();
                return null;
            }
        } else {
            return null;
        }
    }

    public static String formatDate(Date date, String pattern) {
        String format = pattern;
        if (date == null) {
            return "";
        } else {
            if (pattern == null) {
                format = "yyyy-MM-dd";
            }

            SimpleDateFormat sdf = new SimpleDateFormat(format);
            return sdf.format(date);
        }
    }

    public static String formatDate(Date date, String pattern, TimeZone timeZone) {
        String format = pattern;
        if (date == null) {
            return "";
        } else {
            if (pattern == null) {
                format = "yyyy-MM-dd";
            }

            SimpleDateFormat sdf = new SimpleDateFormat(format);
            sdf.setTimeZone(timeZone);
            return sdf.format(date);
        }
    }

    public static String formatDateTime(Date date) {
        return formatDate(date, "yyyy-MM-dd HH:mm:ss");
    }

    public static String formatDateTime() {
        return formatDate(now(), "yyyyMMddHHmmssSSS");
    }

    public static String formatDateTime2() {
        return formatDate(now(), "yyyyMMddHHmmss");
    }

    public static String formatDateTimeMms(Date date) {
        return formatDate(date, "yyyy-MM-dd HH:mm:ss.SSS");
    }

    public static String formatDate(Date date) {
        return formatDate(date, "yyyy-MM-dd");
    }

    public static String formatDate2(Date date) {
        return formatDate(date, "yyyyMMdd");
    }

    public static String formatDate() {
        return formatDate(now(), "yyyy-MM-dd");
    }

    public static String formatDate2() {
        return formatDate(now(), "yyyyMMdd");
    }

    public static String formatTime(Date date) {
        return formatDate(date, "HH:mm:ss");
    }

    public static String formatTime() {
        return formatDate(now(), "HH:mm:ss");
    }

    public static String formatTime2() {
        return formatDate(now(), "HHmmss");
    }

    public static Date now() {
        return new Date();
    }

    public static Date parseDateTime(String datetime) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (datetime != null && !"".equals(datetime)) {
            try {
                return formatter.parse(datetime);
            } catch (ParseException var3) {
                return parseDate(datetime);
            }
        } else {
            return null;
        }
    }

    public static Date parseDate(String date) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        if (date != null && !"".equals(date)) {
            try {
                return formatter.parse(date);
            } catch (ParseException var3) {
                return null;
            }
        } else {
            return null;
        }
    }

    public static Date parseDate2(String date) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        if (date != null && !"".equals(date)) {
            try {
                return formatter.parse(date);
            } catch (ParseException var3) {
                return null;
            }
        } else {
            return null;
        }
    }

    public static Date parseDate(Date datetime) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        if (datetime == null) {
            return null;
        } else {
            try {
                return formatter.parse(formatter.format(datetime));
            } catch (ParseException var3) {
                return null;
            }
        }
    }

    public static String formatDate(Object o) {
        if (o == null) {
            return "";
        } else if (o.getClass() == String.class) {
            return formatDate(o);
        } else if (o.getClass() == Date.class) {
            return formatDate(o);
        } else {
            return o.getClass() == Timestamp.class ? formatDate(new Date(((Timestamp)o).getTime())) : o.toString();
        }
    }

    public static String formatDateTime(Object o) {
        if (o.getClass() == String.class) {
            return formatDateTime(o);
        } else if (o.getClass() == Date.class) {
            return formatDateTime(o);
        } else {
            return o.getClass() == Timestamp.class ? formatDateTime(new Date(((Timestamp)o).getTime())) : o.toString();
        }
    }

    public static Date addMilliSecond(Date date, int amount) {
        return add(date, 14, amount);
    }

    public static Date addSecond(Date date, int amount) {
        return add(date, 13, amount);
    }

    public static Date addMiunte(Date date, int amount) {
        return add(date, 12, amount);
    }

    public static Date addHour(Date date, int amount) {
        return add(date, 10, amount);
    }

    public static Date addDay(Date date, int amount) {
        return add(date, 5, amount);
    }

    public static Date addMonth(Date date, int amount) {
        return add(date, 2, amount);
    }

    public static Date addYear(Date date, int amount) {
        return add(date, 1, amount);
    }

    public static Date getDate() {
        return parseDate(formatDate2());
    }

    public static Date getDateTime() {
        return parseDateTime(formatDateTime());
    }

    public static String parseDateString(String dateString) {
        return formatDate(parseDate2(dateString));
    }

    public static String formatTimeStamp(String dat, String tim, int len) {
        SimpleDateFormat df = new SimpleDateFormat(dat);
        return tim.length() > len ? df.format(Long.valueOf(tim)) : tim;
    }

    public static String formateDate(String dateTime) {
        return dateTime != null && !"".equals(dateTime) ? dateTime.substring(0, 4) + "年" + dateTime.substring(4, 6) + "月" + dateTime.substring(6, 8) + "日 " + dateTime.substring(8, 10) + ":" + dateTime.substring(10, 12) + ":" + dateTime.substring(12, 14) : "";
    }

    public static String secToTime(int time) {
        String timeStr = null;
        int hour = false;
        int minute = false;
        int second = false;
        if (time <= 0) {
            return "00:00";
        } else {
            int minute = time / 60;
            int second;
            if (minute < 60) {
                second = time % 60;
                timeStr = unitFormat(minute) + ":" + unitFormat(second);
            } else {
                int hour = minute / 60;
                minute %= 60;
                second = time - hour * 3600 - minute * 60;
                timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second);
                timeStr = hour > 99 ? "99:59:59" : timeStr;
            }

            return timeStr;
        }
    }

    public static String unitFormat(int i) {
        String retStr = null;
        if (i >= 0 && i < 10) {
            retStr = "0" + Integer.toString(i);
        } else {
            retStr = "" + i;
        }

        return retStr;
    }

    public static String formatIOS8601(String dateStr) {
        return formatIOS8601(dateStr, false);
    }

    public static String formatIOS8601(String dateStr, boolean addOneDay) {
        if (StringUtils.isEmpty(dateStr)) {
            throw new RuntimeException("parse date error, date is empty");
        } else {
            Date date = null;
            if (StringUtils.length(dateStr) == 10) {
                date = parseISO8601(dateStr, "yyyy-MM-dd");
            } else if (StringUtils.length(dateStr) == 19) {
                date = parseISO8601(dateStr, "yyyy-MM-dd HH:mm:ss");
            }

            if (date == null) {
                throw new RuntimeException("parse date error, date length error. ");
            } else {
                Calendar instance = Calendar.getInstance();
                instance.setTime(date);
                instance.add(10, -8);
                if (addOneDay) {
                    instance.add(5, 1);
                }

                date = instance.getTime();
                return formatDate(date, "yyyy-MM-dd‘T‘HH:mm:ss‘Z‘");
            }
        }
    }

    public static Date parseISO8601(String dateStr, String pattern) {
        try {
            return parseDate(dateStr, pattern, TimeZone.getTimeZone("GMT+8"));
        } catch (ParseException var3) {
            return null;
        }
    }

    public static Integer compareTiems(Date time1, Date time2) {
        if (time1 != null && time2 != null) {
            Calendar c1 = Calendar.getInstance();
            Calendar c2 = Calendar.getInstance();
            c1.setTime(time1);
            c2.setTime(time2);
            return c1.compareTo(c2);
        } else {
            return null;
        }
    }

    public static int dateDiffByDay(Date begin, Date end) {
        return (int)((end.getTime() - begin.getTime()) / 24L / 3600000L);
    }

    public static int dateDiffBySec(Date begin, Date end) {
        return (int)((end.getTime() - begin.getTime()) / 1000L);
    }

    public static int dateDiffByMinute(Date begin, Date end) {
        return (int)((end.getTime() - begin.getTime()) / 1000L / 60L);
    }

    public static int dateDiffByHour(Date begin, Date end) {
        return (int)((end.getTime() - begin.getTime()) / 1000L / 3600L);
    }
}

 

以上是关于Date工具类的主要内容,如果未能解决你的问题,请参考以下文章

bootspring???????????????Date??????????????????????????????????????????????????????????????????(代码片段

工具类:Date

带有神秘附加字符的 Javascript Date getTime() 代码片段

自写Date工具类

JS 工具类

JavaScript的My97Date日期工具类的使用