日期格式转换工具类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37279783/article/details/88896351
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期工具
 *
 */
public class DateTimeUtils {

    // public static final SimpleDateFormat FORMAT_LONG = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");

    public static boolean isSameDay(Calendar cal1, Calendar cal2) {
        if (cal1 == null || cal2 == null) return false;
        return (cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA) && cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1
                .get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR));
    }

    public static boolean isSameDay(Date date1, Date date2) {
        if (date1 == null || date2 == null) return false;
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);
        return isSameDay(cal1, cal2);
    }

    public static boolean isSameInstant(Date date1, Date date2) {
        if (date1 == null || date2 == null) return false;
        return date1.getTime() == date2.getTime();
    }

    public static boolean isSameInstant(Calendar cal1, Calendar cal2) {
        if (cal1 == null || cal2 == null) return false;
        return cal1.getTime().getTime() == cal2.getTime().getTime();
    }

    public static Date addYears(Date date, int amount) {
        return add(date, Calendar.YEAR, amount);
    }

    public static Date addMonths(Date date, int amount) {
        return add(date, Calendar.MONTH, amount);
    }

    public static Date addWeeks(Date date, int amount) {
        return add(date, Calendar.WEEK_OF_YEAR, amount);
    }

    public static Date addDays(Date date, int amount) {
        return add(date, Calendar.DAY_OF_MONTH, amount);
    }

    public static Date addHours(Date date, int amount) {
        return add(date, Calendar.HOUR_OF_DAY, amount);
    }

    public static Date addMinutes(Date date, int amount) {
        return add(date, Calendar.MINUTE, amount);
    }

    public static Date addSeconds(Date date, int amount) {
        return add(date, Calendar.SECOND, amount);
    }

    public static Date addMilliseconds(Date date, int amount) {
        return add(date, Calendar.MILLISECOND, amount);
    }

    public static Date add(Date date, int calendarField, int amount) {
        if (date == null) throw new IllegalArgumentException("日期不能为空");

        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(calendarField, amount);
        return c.getTime();
    }

    public static String today() {
        return today("yyyy-MM-dd");
    }

    public static String now() {
        return today("yyyy-MM-dd HH:mm:ss SSS");
    }

    public static String today(String pattern) {
        if (pattern == null) throw new IllegalArgumentException("日期格式不能为空");
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        String dt = sdf.format(new Date());
        return dt;
    }

    public static Date parseDate(String src) {
        return parse(src, "yyyy-MM-dd");
    }

    public static Date parseDatetime(String src) {
        return parse(src, "yyyy-MM-dd HH:mm:ss");
    }

    public static Date parse(String src, String pattern) {
        if (pattern == null) throw new IllegalArgumentException("日期格式不能为空");
        if (src == null) return null;
        try {
            return new SimpleDateFormat(pattern).parse(src);
        } catch (ParseException ex) {
            throw new IllegalArgumentException("日期格式转换出错,src=" + src + ",pattern=" + pattern);
        }
    }

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

    public static String formatDatetime(Date src) {
        return format(src, "yyyy-MM-dd HH:mm:ss");
    }

    public static String format(Date src, String pattern) {
        if (pattern == null) throw new IllegalArgumentException("日期格式不能为空");
        if (src == null) return null;
        return new SimpleDateFormat(pattern).format(src);
    }

    public static int getLastDayOfMonth(int y, int m) {
        boolean IsLeapYear = (y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0);
        int days = 0;
        switch (m) {
            case 2:
                if (IsLeapYear) {
                    days = 29;
                } else days = 28;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            default:
                days = 31;
                break;
        }
        return days;
    }

    /**
     * 中文星期几
     *
     * @return
     */
    public static String getCnWeekDay() {
        return getCnWeekDay(new Date());
    }

    /**
     * 中文星期几
     *
     * @return
     */
    public static String getCnWeekDay(Date date) {
        String[] weekDays = {"日", "一", "二", "三", "四", "五", "六"};
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0) w = 0;
        return "星期" + weekDays[w];
    }

    /**
     * 获取当月的第一天
     * @return
     */
    public static Date getFirstDateOfCurrentMonth() {
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        int year = instance.get(Calendar.YEAR);
        int month = instance.get(Calendar.MONTH);
        instance.set(year, month, 1, 0, 0, 0);
        return instance.getTime();
    }

    public static Date getFirstDateOfCurrentYear() {
        Calendar instance = Calendar.getInstance();
        instance.setTime(new Date());
        int year = instance.get(Calendar.YEAR);
        instance.set(year, Calendar.JANUARY, 1, 0, 0, 0);
        return instance.getTime();
    }

    /**
     * 获取两个日期之间的天数(两个字符串)
     * @param smdate
     * @param bdate
     * @return
     * @throws ParseException
     */
    public static int daysBetween(String smdate,String bdate) throws ParseException{
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(smdate));
        long time1 = cal.getTimeInMillis();
        cal.setTime(sdf.parse(bdate));
        long time2 = cal.getTimeInMillis();
        long between_days=(time2-time1)/(1000*3600*24);
        return Integer.parseInt(String.valueOf(between_days));
    }

    /**
     * 获取两个日期之间的天数(字符串与date)
     * @param smdate
     * @param bdate
     * @return
     * @throws ParseException
     */
    public static int daysBetween(String smdate,Date bdate) throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(smdate));
        long time1 = cal.getTimeInMillis();
        cal.setTime(bdate);
        long time2 = cal.getTimeInMillis();
        long between_days=(time2-time1)/(1000*3600*24);
        return Integer.parseInt(String.valueOf(between_days));
    }
    /**
     * 获取两个日期之间的天数(字符串与date)
     * @param smdate
     * @param bdate
     * @return
     * @throws ParseException
     */
    public static int daysBetween(Date smdate, String bdate) throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(sdf.parse(bdate));
        long time1 = cal.getTimeInMillis();
        cal.setTime(smdate);
        long time2 = cal.getTimeInMillis();
        long between_days=(time1-time2)/(1000*3600*24);
        return Integer.parseInt(String.valueOf(between_days));
    }

    /**
     * 将毫秒转化(转换成*天*小时*分钟*秒)
     * @param millis
     * @return
     * @throws ParseException
     */
    public static String parse(long millis) throws ParseException {
        long days = millis / (1000 * 60 * 60 * 24);
        long hours = (millis % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
        long minutes = (millis % (1000 * 60 * 60)) / (1000 * 60);
        long  secs = (millis % (1000 * 60)) / (1000);
        String day = days==0l?"":days+"天";
        String hour = hours==0l?"":hours+"小时";
        String minute = minutes==0l?"":minutes+"分钟";
        String sec = secs==0l?"":secs+"秒";
        return day+hour+minute+sec;
    }
    public static void main(String[] args) {
        System.out.println(format(getFirstDateOfCurrentYear(), "yyyy-MM-dd HH:mm:ss"));
    }

}

猜你喜欢

转载自blog.csdn.net/qq_37279783/article/details/88896351