[java]日期工具类-DateUtil

来源:互联网 发布:tpp ttip 知乎 编辑:程序博客网 时间:2024/05/17 10:55
package com.coracle.worklog.util;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Locale;/** *  日期工具类 * Created by lwy on 2017/9/27. */public class DateUtil {    private static DateUtil dateUtil;    private DateUtil(){    }    /**     * 获取DateUtil实例     */    public static DateUtil getInstance(){        if(dateUtil==null){            synchronized(DateUtil.class){                if(dateUtil==null){                    dateUtil=new DateUtil();                }            }        }        return dateUtil;    }    /**     * 日期转化为对应的格式字符串     * @param date      时间     * @param pattern 格式化的时间格式     *     * @return     */    public String formatDate(Date date,String pattern){        SimpleDateFormat dateFormat=new SimpleDateFormat(pattern);        return dateFormat.format(date);    }    /**     *  字符串转化为对应的日期格式     * @param dateStr  时间字符串     * @param format 格式化的时间格式     * @return     */    public Date parseDate(String dateStr,String format) throws ParseException{        SimpleDateFormat dateFormat=new SimpleDateFormat(format);        return dateFormat.parse(dateStr);    }    /**     *  根据传入日期,获取当前日期的本周第一天(周一)     * @param date     * @return     */    public Date getWeekHand(Date date){        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);        return calendar.getTime();    }    /**     *  根据传入日期,获取当前日期的本周第一天(周一)     * @param date 日期     * @param pattern 要转化的格式     * @return     */    public String getWeekHand(Date date,String pattern){        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);        return formatDate(calendar.getTime(),pattern);    }    /**     *  根据传入日期,获取当前日期的本周最后一天(周日)     * @param date 日期     * @return     */    public Date getWeekLast(Date date){        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);        calendar.set(Calendar.DATE, calendar.get(calendar.DATE) + 6);        return calendar.getTime();    }    /**     *  根据传入日期,获取当前日期的本周最后一天(周日)     * @param date 日期     * @param pattern 要转化的格式     * @return     */    public String getWeekLast(Date date,String pattern){        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);        calendar.set(Calendar.DATE, calendar.get(calendar.DATE) + 6);        return formatDate(calendar.getTime(),pattern);    }    /**     *  日期加法     * @param dateStr 时间字符串格式     * @param day     要增加的天数     * @param pattern  时间格式     * @return     */    public String addDate(String dateStr,int day,String pattern) throws ParseException{        Date date = parseDate(dateStr, pattern);        Calendar calendar=Calendar.getInstance();        calendar.setTime(date);        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)+day);        return formatDate(calendar.getTime(),pattern);    }    /**     *  日期加法     * @param date 日期     * @param day     要增加的天数     * @return     */    public Date addDate(Date date,int day){        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)+day);        return calendar.getTime();    }    /**     *  日期加法     * @param date 日期     * @param day     要增加的天数     * @param pattern 日期格式     * @return     */    public String addDate(Date date,int day,String pattern){        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)+day);        return formatDate(calendar.getTime(),pattern);    }    /**     *  日期减法     * @param dateStr 时间字符串格式     * @param day     要减少的天数     * @param pattern  时间格式     * @return     */    public String minusDate(String dateStr,int day,String pattern) throws ParseException{        Date date = parseDate(dateStr,pattern);        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)-day);        return formatDate(calendar.getTime(),pattern);    }    /**     *  日期减法     * @param date  时间     * @param day  要减少的天数     * @return     */    public Date minusDate(Date date,int day) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)-day);        return calendar.getTime();    }    /**     *  日期减法     * @param date  时间     * @param day  要减少的天数     * @return     */    public String minusDate(Date date,int day,String pattern) {        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)-day);        return formatDate(calendar.getTime(),pattern);    }    public String getWeekOfMonth(Date date){        Calendar calendar = Calendar.getInstance();        calendar.setTime(date);        int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);        return String.format(Locale.SIMPLIFIED_CHINESE,"%tb份第%d周",calendar.getTime(),weekOfMonth);    }    public String getWeekOfMonth(String dateStr,String pattern) throws ParseException{        Calendar calendar = Calendar.getInstance();        calendar.setTime(parseDate(dateStr,pattern));        calendar.setFirstDayOfWeek(Calendar.MONDAY);        int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);        return String.format(Locale.SIMPLIFIED_CHINESE,"%tb份第%d周",calendar.getTime(),weekOfMonth);    }    public static void main(String[] args) {        SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");        try {            System.out.println(dateFormat.format(DateUtil.getInstance().getWeekHand(new Date())));            System.out.println(dateFormat.format(DateUtil.getInstance().getWeekLast(new Date())));            System.out.println(DateUtil.getInstance().minusDate("2017-09-27",2,"yyyy-MM-dd"));            System.out.println( DateUtil.getInstance().addDate("2017-09-27",2,"yyyy-MM-dd"));            System.out.println(DateUtil.getInstance().getWeekOfMonth(new Date()));        }catch (Exception ex){            ex.printStackTrace();        }    }}