Java 常用日期函数:获取当天日期、本周第一天等函数

简介: 日期函数在开发过程中经常需要用得到,需要转换日期,获取当天日期,本周第一天,本周最后一天等就需要用到这些函数。


清单: 日期工具类 DateUtils.java

    private static final String PATTERN_DATE = "yyyy-MM-dd";
    private static final String PATTERN_TIME = "HH:mm:ss";
    private static final String PATTERN_DATE_TIME = "yyyy-MM-dd HH:mm:ss";
    private static final String PATTERN_DATE_CN = "yyyy年MM月dd日";
    private static final String PATTERN_TIME_CN = "yyyy年MM月dd日 HH时mm分ss秒";


    /**
     * <b>字符串日期转换为日期类型 formatted as yyyy-MM-dd</b>
     * 
     * @param date 字符串日期
     * @return
     * @throws Exception
     */
    public static Date parseDate(String dateValue) throws Exception {
        if (dateValue == null) {
            throw new IllegalArgumentException("date is null");
        }
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        Date date = null;
        try {
            date = dateFormat.parse(dateValue);
        } catch (ParseException e) {
            throw new IllegalArgumentException(e);
        }
        return date;
    }
    
    /**
     * 字符串日期转换为日期类型
     * 
     * @param dateValue 字符串日期
     * @param pattern 日期模式
     * @return
     * @throws Exception
     */
    public static Date parseDate(String dateValue, String pattern) throws Exception {
        if (dateValue == null) {
            throw new IllegalArgumentException("date is null");
        }
        if (pattern == null) {
            throw new IllegalArgumentException("pattern is null");
        }
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        Date date = null;
        try {
            date = dateFormat.parse(dateValue);
        } catch (ParseException e) {
            throw new IllegalArgumentException(e);
        }
        return date;
    }
    
    /**
     * <b>日期类型转换为字符串 formatted as yyyy-MM-dd</b>
     * 
     * @param dateValue 日期类型
     * @return
     * @throws Exception
     */
    public static String formatDate(Date dateValue) throws Exception {
        if (dateValue == null) {
            throw new IllegalArgumentException("date is null");
        }
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        String date = null;
        try {
            date = dateFormat.format(dateValue);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException(e);
        }
        return date;
    }
    
    /**
     * 日期类型转换为字符串
     * 
     * @param dateValue 日期类型
     * @param pattern 日期模式
     * @return
     * @throws Exception
     */
    public static String formatDate(Date dateValue, String pattern) throws Exception {
        if (dateValue == null) {
            throw new IllegalArgumentException("date is null");
        }
        if (pattern == null) {
            throw new IllegalArgumentException("pattern is null");
        }
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        String date = null;
        try {
            date = dateFormat.format(dateValue);
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException(e);
        }
        return date;
    }
    
    /**
     * <b>获取当前日期:formatted as yyyy-MM-dd</b>
     * 
     * @return
     */
    public static String getCurrentDate() throws Exception {
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        return dateFormat.format(new java.util.Date());
    }


    /**
     * <b>获取当前日期:</b>
     * 
     * @param pattern 日期模式
     * @return
     */
    public static String getCurrentDate(String pattern) throws Exception {
        if (pattern == null) {
            throw new IllegalArgumentException("pattern is null");
        }
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        return dateFormat.format(new java.util.Date());
    }


    /**
     * <b>获取年份:根据日期</b>
     * 
     * @param date 日期
     * @return
     */
    public static String getYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return String.valueOf(calendar.get(Calendar.YEAR));
    }


    /**
     * <b>获取月份:根据日期</b>
     * 
     * @param date
     * @return
     */
    public static String getMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return String.valueOf(calendar.get(Calendar.MONTH) + 1);
    }


    /**
     * <b>获取日:根据日期</b>
     * 
     * @param date
     * @return
     */
    public static String getDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return String.valueOf(calendar.get(Calendar.DATE));
    }


    /**
     * <b>获取本月最后一天:formatted as yyyy-MM-dd</b>
     * 
     * @return
     */
    public static String getLastDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        calendar.set(Calendar.DATE, 1);
        calendar.roll(Calendar.DATE, -1);
        return dateFormat.format(calendar.getTime());
    }
    
    /**
     * <b>获取本月最后一天:</b>
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getLastDayOfMonth(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        calendar.setTime(date);
        calendar.set(Calendar.DATE, 1);
        calendar.roll(Calendar.DATE, -1);
        return dateFormat.format(calendar.getTime());
    }
    
    /**
     * <b>获取本月第一天:formatted as yyyy-MM-dd</b>
     * 
     * @return
     */
    public static String getFirstDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DATE, 1);
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        return dateFormat.format(calendar.getTime());
    }
    
    /**
     * <b>获取本月第一天:</b>
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getFirstDayOfMonth(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DATE, 1);
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取本周星期一:formatted as yyyy-MM-dd</b>
     * 
     * @return
     */
    public static String getMondayOfWeek() {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取星期一:根据指定日期和日期模式</b>
     * 
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getMondayOfWeek(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取本周星期天:formatted as yyyy-MM-dd</b>
     * @return
     */
    public static String getSundayOfWeek() {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        calendar.add(Calendar.WEEK_OF_YEAR, 1);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取星期天:根据指定日期和日期模式</b>
     * 
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getSundayOfWeek(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        calendar.add(Calendar.WEEK_OF_YEAR, 1);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取上周星期天:formatted as yyyy-MM-dd</b>
     * @return
     */
    public static String getSundayOfLastWeek() {
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_WEEK, 1);
        return dateFormat.format(calendar.getTime());
    }
    
    /**
     * <b>获取上周星期天:</b>
     * 
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getSundayOfLastWeek(Date date, String pattern) {
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, 1);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取上周星期一:formatted as yyyy-MM-dd</b>
     * @return
     */
    public static String getMondayOfLastWeek() {
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.WEEK_OF_MONTH, -1);
        calendar.set(Calendar.DAY_OF_WEEK, 2);
        return dateFormat.format(calendar.getTime());
    }
    
    /**
     * <b>获取上周星期一:</b>
     * 
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getMondayOfLastWeek(Date date, String pattern) {
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.WEEK_OF_MONTH, -1);
        calendar.set(Calendar.DAY_OF_WEEK, 2);
        calendar.setTime(date);
        return dateFormat.format(calendar.getTime());
    }
    
    /**
     * <b>获取上月第一天:formatted as yyyy-MM-dd</b>
     * @return
     */
    public static String getFirstDayOfLastMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DATE, 1);
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取上月第一天:</b>
     * 
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getFirstDayOfLastMonth(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DATE, 1);
        calendar.setTime(date);
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        return dateFormat.format(calendar.getTime());
    }


    /**
     * <b>获取上月最后一天:formatted as yyyy-MM-dd</b>
     * @return
     */
    public static String getLastDayOfLastMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, -1);
        calendar.roll(Calendar.DATE, -1);
        DateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE);
        return dateFormat.format(calendar.getTime());
    }
    
    /**
     * <b>获取上月最后一天:</b>
     * 
     * @param date 日期
     * @param pattern 日期模式
     * @return
     */
    public static String getLastDayOfLastMonth(Date date, String pattern) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.MONTH, -1);
        calendar.roll(Calendar.DATE, -1);
        calendar.setTime(date);
        DateFormat dateFormat = new SimpleDateFormat(pattern);
        return dateFormat.format(calendar.getTime());
    }


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值