工具类:时间

开始

package com.xjxcc.util;
  
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
  
public class DateUtils {
     
    public static final String FORMAT_YYYYMMDD_HHMMSS_EN = "yyyy-MM-dd HH:mm:ss";
    public static final String FORMAT_YYYYMMDD_EN = "yyyy-MM-dd";
    public static final String FORMAT_HHMMSS_EN = "HH:mm:ss";
     
    public static final String FORMAT_YYYYMMDD_HHMMSS_CN = "yyyy年MM月dd日 HH时mm分ss秒";
    public static final String FORMAT_YYYYMMDD_CN = "yyyy年MM月dd日";
    public static final String FORMAT_HHMMSS_CN = "HH时mm分ss秒";
     
     
    public static final Map<String, Integer> WEEK_NUM_MAP = new HashMap<String, Integer>(){
        private static final long serialVersionUID = -5497456354895965657L;
        {
            put("monday", 1);
            put("tuesday", 2);
            put("wednesday", 3);
            put("thursday", 4);
            put("friday", 5);
            put("saturday", 6);
            put("sunday", 7);
        }
    };
    public static final Map<String, String> WEEK_CN_MAP = new HashMap<String, String>(){
        private static final long serialVersionUID = 7082498901453059141L;
        {
            put("monday", "一");
            put("tuesday", "二");
            put("wednesday", "三");
            put("thursday", "四");
            put("friday", "五");
            put("saturday", "六");
            put("sunday", "日");
        }
    };
 
  
    /**
     * 取得指定天数后的时间
     * @param date 时间
     * @param dayAmount 指定天数(允许为负数)
     * @return
     */
    public static Date addDay(Date date, int dayAmount) {
        if (date == null) {
            return null;
        }
  
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, dayAmount);
        return calendar.getTime();
    }
  
    /**
     * 取得指定小时数后的时间
     * @param date 时间
     * @param hourAmount 指定小时数(允许为负数)
     * @return
     */
    public static Date addHour(Date date, int hourAmount) {
        if (date == null) {
            return null;
        }
  
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR, hourAmount);
        return calendar.getTime();
    }
  
    /**
     * 取得指定分钟数后的时间
     * @param date 时间
     * @param minuteAmount 指定分钟数(可以为负数)
     * @return
     */
    public static Date addMinute(Date date, int minuteAmount) {
        if (date == null) {
            return null;
        }
  
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MINUTE, minuteAmount);
        return calendar.getTime();
    }
     
    /**
     * 获取周几的中文、如果传入monday、则返回:一
     * @param enWeekName
     * @return
     */
    public static String getWeekCN(String enWeekName) {
        return WEEK_CN_MAP.get(enWeekName);
    }
     
    /**
     * 获取周几的数字、如果传入monday、则返回:1
     * @param enWeekName
     * @return
     */
    public static int getWeekAmount(String enWeekName) {
        return WEEK_NUM_MAP.get(enWeekName);
    }
     
    /**
     * 根据指定的年、月、日获取时间
     * @param year 年
     * @param month 月
     * @param day 日
     * @return
     */
    public static Date getDate(int year, int month, int day) {
        return getDate(year, month, day, 0, 0);
    }
  
    /**
     * 根据指定的年、月、日、小时、分获取时间
     * @param year 年
     * @param month 月
     * @param day 日
     * @param hourOfDay 小时
     * @param minute 分
     * @return
     */
    public static Date getDate(int year, int month, int day, int hourOfDay,
            int minute) {
        return getDate(year, month, day, hourOfDay, minute, 0);
    }
  
    /**
     * 根据指定的年、月、日、小时、分、秒获取时间
     * @param year 年
     * @param month 月
     * @param day 日
     * @param hourOfDay 小时
     * @param minute 分
     * @param second 秒
     * @return
     */
    public static Date getDate(int year, int month, int day, int hourOfDay,
            int minute, int second) {
        Calendar cal = Calendar.getInstance();
        cal.set(year, month - 1, day, hourOfDay, minute, second);
        cal.set(Calendar.MILLISECOND, 0);
  
        return cal.getTime();
    }
  
    /**
     * 获取某个时间是周几
     * @param date
     * @return
     */
    public static int getDayOfWeek(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.DAY_OF_WEEK);
    }
  
    /**
     * 得到指定日期的下一天
     * @param date 时间
     */
    public static Date getDateNextDay(Date date) {
        return addDay(date, 1);
    }
     
    /**
     * 获取某个时间的开始    如:2018-07-20 00:00:00:0
     * @param date 时间
     * @return
     */
    public static Date getDateByStart(Date date) {
        if (date == null) {
            return null;
        }
  
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
  
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
  
        return cal.getTime();
    }
     
    /**
     * 获取某个时间的结束    如:2018-07-20 23:59:59.999
     * @param date 时间
     * @return
     */
    public static Date getDateByEnd(Date date) {
  
        if (date == null) {
            return null;
        }
  
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
  
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);
  
        return cal.getTime();
    }
     
    /**
     * 根据时间获取指定格式的字符串时间
     * @param date 时间
     * @param fotmat 指定格式
     * @return
     */
    public static String getDateStrByFormat(Date date, String fotmat) {
        if (fotmat == null) {
            return null;
        }
  
        SimpleDateFormat format = new SimpleDateFormat(fotmat);
        return format.format(date);
    }
     
    /**
     * 判断某一年是否为闰年
     * @param year 某一年
     * @return
     */
    public static boolean isLeapYear(int year) {
        Calendar calendar = Calendar.getInstance();
        return ((GregorianCalendar) calendar).isLeapYear(year);
    }
  
    /**
     * 获取某个时间是这一年中的第几周
     * @param date 某个时间
     * @return
     */
    public static int getWeekCountOfYear(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.WEEK_OF_YEAR);
    }
  
    /**
     * 获取上周的周几
     * @param dayOfWeek 周几
     * @return
     */
    public static Date getDateOfPreviousWeek(int dayOfWeek) {
        if (dayOfWeek > 7 || dayOfWeek < 1) {
            throw new IllegalArgumentException("参数必须是1-7之间的数字");
        }
  
        return getDateOfRange(dayOfWeek, -1);
    }
  
    /**
     * 获取本周的周几
     * @param dayOfWeek 周几
     * @return
     */
    public static Date getDateOfCurrentWeek(int dayOfWeek) {
        if (dayOfWeek > 7 || dayOfWeek < 1) {
            throw new IllegalArgumentException("参数必须是1-7之间的数字");
        }
  
        return getDateOfRange(dayOfWeek, 0);
    }
  
    /**
     * 获取下一周的周几
     * @param dayOfWeek 周几
     * @return
     */
    public static Date getDateOfNextWeek(int dayOfWeek) {
        if (dayOfWeek > 7 || dayOfWeek < 1) {
            throw new IllegalArgumentException("参数必须是1-7之间的数字");
        }
  
        return getDateOfRange(dayOfWeek, 1);
    }
  
    /**
     * 获取某周的周几的时间
     * @param dayOfWeek 周几
     * @param dayOfRange 某周(本周就是1、上周就是-1、下周就是1、下下周就是2、以此类推)
     * @return 
     */
    private static Date getDateOfRange(int dayOfWeek, int week) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, dayOfWeek + 1);
        cal.set(Calendar.DATE, cal.get(Calendar.DATE) + week * 7);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        return cal.getTime();
    }
     
    /** 
     * 获取某年某月的最后一天 
     * @param year 某年
     * @param month 某月
     * @return 
     */  
    public static Date getLastDayOfMY(int month, int year) {  
        Calendar cal = Calendar.getInstance();  
        //设置年份  
        cal.set(Calendar.YEAR,year);  
        //设置月份  
        cal.set(Calendar.MONTH, month-1);  
        //获取某月最大天数  
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);  
        //设置日历中月份的最大天数  
        cal.set(Calendar.DAY_OF_MONTH, lastDay);  
            
        return cal.getTime();  
    }  
     
    /**
     * 获取某年某月的最后一天
     * @param year 某年
     * @param month 某月
     * @return
     */
    public static int getLastDayCountOfMY(int year, int month) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getLastDayOfMY(month, year));
         
        return calendar.get(Calendar.DAY_OF_MONTH);
    }
     
    /** 
     * 获取某年某月的第一天 
     * @param year 某年
     * @param month 某月
     * @return 
     */  
    public static Date getFirstDayOfMY(int month, int year) {  
        Calendar cal = Calendar.getInstance();  
        //设置年份  
        cal.set(Calendar.YEAR,year);  
        //设置月份  
        cal.set(Calendar.MONTH, month-1);  
        //获取某月最大天数  
        int lastDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);  
        //设置日历中月份的最大天数  
        cal.set(Calendar.DAY_OF_MONTH, lastDay);  
            
        return cal.getTime();  
    }  
      
    /** 
     * 获取当前这个月的最后一天 
     * @return 
     */  
    public static Date getLastDayOfCurrentM() {  
        Calendar cal = Calendar.getInstance();  
        //获取某月最大天数  
        int lastDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);  
        //设置日历中月份的最大天数  
        cal.set(Calendar.DAY_OF_MONTH, lastDay);  
            
        return cal.getTime();  
    } 
      
    /** 
     * 获取当前这个月的第一天 
     * @return 
     */  
    public static Date getFirstDayOfCurrentM() {  
        Calendar cal = Calendar.getInstance();  
        //获取某月最大天数  
        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);  
        //设置日历中月份的最大天数  
        cal.set(Calendar.DAY_OF_MONTH, lastDay);  
            
        return cal.getTime();  
    }  
}

结束

猜你喜欢

转载自blog.csdn.net/liguoqingxjxcc/article/details/81666616