java日期常用方法处理汇总

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

/**
 * Created by X240 on 2018/5/18.
 */
public class DateTool {

    private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");

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

    private final static SimpleDateFormat sdfDayNoStr = new SimpleDateFormat("yyyyMMdd");

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

    private final static Calendar calendar = Calendar.getInstance();
    /**
     * 获取当前年份 YYYY格式
     */
    public static String getYear(){
        return sdfYear.format(new Date());
    }

    /**
     * 获取当前日期 YYYY-MM-DD格式
     */
    public static String getDay(){
        return sdfDay.format(new Date());
    }

    /**
     * 获取当前日期 YYYYMMDD格式
     */
    public static String getDayNoStr(){
        return sdfDayNoStr.format(new Date());
    }

    /**
     * 获取当前时间 YYYY-MM-DD HH:mm:ss格式
     */
    public static String getTime(){
        return sdfTime.format(new Date());
    }

    /**
     * String转Date
     * @param s
     * @return
     */
    public static Date transferDate(String s){
        try {
            return sdfTime.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /*判断日期是一周中的第几天*/
    public static int getWeekWhich(String str){
        calendar.setTime(transferDate(str));
        return calendar.get(Calendar.DAY_OF_WEEK);
    }

    /**
     * 比较两个日期的大小
     * @param d1
     * @param d2
     * @return
     */
    public static int compareDate(String d1,String d2){
        try {
            Date date1 = sdfTime.parse(d1);
            Date date2 = sdfTime.parse(d2);
            if (date1.getTime() > date2.getTime()){
                System.out.println("d1 在 d2 前");
                return 1;
            }else if(date1.getTime() < date2.getTime()){
                System.out.println("d1 在 d2 后");
                return -1;
            }else {
                return 0;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }


    /**
     * 计算两个日期相差天数
     * @param d1
     * @param d2
     * @return
     */
    public static int differentDays(String d1,String d2){
        try {
            return (int) ((sdfTime.parse(d1).getTime() - sdfTime.parse(d2).getTime()) / (1000*3600*24));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }

    /**
     * 获取指定天数前后的日期
     * @param day 指定天数
     * @param s 加减
     * @return
     */
    public static String getNamedDays(int day,String s){
        Calendar canlendar = Calendar.getInstance();
        if(s.equals("+")){
            canlendar.add(Calendar.DATE, day); // 日期减 如果不够减会将月变动
        }else {
            canlendar.add(Calendar.DATE, -day); // 日期减 如果不够减会将月变动
        }
        Date date = canlendar.getTime();

        SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = sdfd.format(date);

        return dateStr;
    }

    public static  int getMondayPlus() {
        Calendar cd = Calendar.getInstance();
        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
        if (dayOfWeek == 1) {
            return -6;
        } else {
            return 2 - dayOfWeek;
        }
    }

    /*获得当前周- 周一的日期  */
    public static  String getCurrentMonday() {
        int mondayPlus = getMondayPlus();
        calendar.add(Calendar.DATE, mondayPlus);
        Date monday = calendar.getTime();
        String preMonday = sdfTime.format(monday);
        return preMonday;
    }

    /**
     * 获得当前周- 周日  的日期
     * @return
     */
    public static String getPreviousSunday() {
        int mondayPlus = getMondayPlus();
        calendar.add(Calendar.DATE, mondayPlus +6);
        Date monday = calendar.getTime();
        String preMonday = sdfTime.format(monday);
        return preMonday;
    }

    /*获得当前月--开始日期  */
    public static String getMinMonthDate(String date) {
        try {
            calendar.setTime(sdfTime.parse(date));
            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
            return sdfTime.format(calendar.getTime());
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     *  获得当前月--结束日期
     * @param date
     * @return
     */
    public static String getMaxMonthDate(String date){
        try {
            calendar.setTime(sdfTime.parse(date));
            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
            return sdfTime.format(calendar.getTime());
        }  catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34479912/article/details/80365873