日期Date操作的相关方法

本文介绍了一个实用的日期操作工具类,提供了多种日期处理方法,包括获取当前日期、昨天、明天及指定日期前后天等,同时支持日期格式转换,适用于各种日期相关业务场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.cmcc.flow.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

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

/**
 * 
 */
public class DateTimeUtil {

	private static Log logger = LogFactory.getLog(DateTimeUtil.class);
	
	private final static String DATE_FORMAT_YYMMDD="yyyyMMdd";


	public static Calendar getCurrentDay(){
        Calendar cal = Calendar.getInstance();
        return cal;
    }

    /**
	 * 获取昨天日期
	 */
	public static String getYesterdayStr() {
		Calendar cal = getCurrentDay();
		cal.add(Calendar.DATE,   -1);
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式,不显示毫秒
		return df.format(cal.getTime());
	}

	/**
	 * 获取昨天
	 * @return
	 */
	public static Date getYesterday(){
		Calendar cal = getCurrentDay();
		cal.add(Calendar.DATE,   -1);
		return cal.getTime();
	}

	public static Date getTomorrow(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DATE,   +1);
		return cal.getTime();
	}
	
	public static Date getAfterOrBeforeDate(Date date, int afterDates){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DATE,   afterDates);
		return cal.getTime();
	}
	
	/**
	 * 获取某月第一天
	 * @param date
	 * @return
	 * @author wangguangyao@chinamobile.com
	 * @date 2015年1月7日
	 */
	public static String getFirstDayInMonth(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.DAY_OF_MONTH,1);
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式,不显示毫秒
		return df.format(cal.getTime());
	}
	
	/**
	 * 获取某月最后一天
	 * @param date
	 * @return
	 * @author wangguangyao@chinamobile.com
	 * @date 2015年1月7日
	 */
	public static String getLastDayInMonth(Date date){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.DAY_OF_MONTH,cal.getActualMaximum(Calendar.DAY_OF_MONTH));
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//定义格式,不显示毫秒
		return df.format(cal.getTime());
	}
	
	/**
	 * 
	 * @param date:字符串格式只支持yyyy-MM-dd格式
	 * @param afterDates:负数向前推算,正数向后推算
	 * @return
	 * @throws ParseException 
	 */
	public static String getAfterOrBeforeDate(String date, int afterDates) throws ParseException{
		String yyyy_MM_dd = "yyyy-MM-dd";
		Calendar cal = Calendar.getInstance();
		cal.setTime(converStrToDate(yyyy_MM_dd, date));
		cal.add(Calendar.DATE, afterDates);
		return getDateStrByFormat(yyyy_MM_dd, cal.getTime());
	}

	/**
	 * 根据格式化串格式化日期
	 * @param format
	 * @param date
	 * @return
	 */
	public static String getDateStrByFormat(String format, Date date) {
		SimpleDateFormat df = new SimpleDateFormat(format);//定义格式,不显示毫秒
		return df.format(date);
	}

	/**
	 *
	 * @param dateInt 整型不允许为null
	 * @param interval 间隔天数,可为正负
	 * @param dateFormat 日期格式化类型
	 * @return  返回间隔后的整数日期,出现异常返回null
	 */
	public static Long getIntervalDate(Long dateInt,int interval,String dateFormat) {

		//
		if(dateFormat==null){
			dateFormat=DATE_FORMAT_YYMMDD;
		}

		Long intervalDate=null;
    	SimpleDateFormat simpleDateFormat  = new SimpleDateFormat(dateFormat);
    	Date date = null;

		try {
			date = simpleDateFormat.parse(String.valueOf(dateInt));
			Calendar calendar = Calendar.getInstance();
	    	calendar.setTime(date);
	    	calendar.add(Calendar.DAY_OF_MONTH, interval);

	    	intervalDate=Long.valueOf(simpleDateFormat.format(calendar.getTime()));

		} catch (ParseException e) {
			logger.error("DateToolUti.getIntervalDate",e);
		}
		return intervalDate;
    }

	public static Date converStrToDate(String format, String date) throws ParseException {
		Date dateTemp = null;
		SimpleDateFormat formater2 = new SimpleDateFormat(format);
		dateTemp = formater2.parse(date);
		return dateTemp;
	}
	
	public static String yyyyXMMXdd2yyyyMMdd(String date_str, String X) throws ParseException{
		Date date = yyyyXMMXdd(date_str, X);
		return yyyyMMdd(date);
	}
	
	public static String yyyyMMdd2yyyyXMMXdd(String date_str, String X) throws ParseException{
		Date date = yyyyMMdd( date_str); 
		return yyyyXMMXdd(date, X);
	}
	
	public static Date yyyyXMMXdd2yyyyMMdd(Date date, String X) throws ParseException{
		String date_ = yyyyXMMXdd(date, X);
		return yyyyMMdd(date_);
	}
	
	public static Date yyyyMMdd(String date_str) throws ParseException{
		return new SimpleDateFormat("yyyyMMdd").parse(date_str);
	}
	
	public static String yyyyMMdd(Date date) throws ParseException{
		return new SimpleDateFormat("yyyyMMdd").format(date);
	}
	
	public static String yyyy_MM_dd(Date date) throws ParseException{
		return new SimpleDateFormat("yyyy-MM-dd").format(date);
	}
	
	public static Date yyyy_MM_dd(String date_str) throws ParseException{
		return new SimpleDateFormat("yyyy-MM-dd").parse(date_str);
	}
	
	public static Date yyyyXMMXdd(String date_str, String x) throws ParseException{
		return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd").parse(date_str);
	}
	
	public static String yyyyXMMXdd(Date date, String x) throws ParseException{
		return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd").format(date);
	}
	
	public static Date yyyyMMddHHmmss(String date_str) throws ParseException{
		return new SimpleDateFormat("yyyyMMddHHmmss").parse(date_str);
	}
	
	public static String yyyyMMddHHmmss(Date date) throws ParseException{
		return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
	}
	
	public static String yyyy_MM_dd_HH_mm_ss(Timestamp date) throws ParseException{
		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
	}
	
	public static String yyyy_MM_dd_HH_mm_ss(Date date) throws ParseException{
		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
	}
	
	public static Date yyyy_MM_dd_HH_mm_ss(String date_str) throws ParseException{
		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date_str);
	}
	
	public static Date yyyyXMMXdd_HHXmmXss(String date_str, String x) throws ParseException{
		return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+x+"mm"+x+"ss").parse(date_str);
	}
	
	public static String yyyyXMMXdd_HHXmmXss(Date date, String x) throws ParseException{
		return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+x+"mm"+x+"ss").format(date);
	}
	
	public static Date yyyyXMMXdd_HHXmmXss(String date_str, String x, String xx) throws ParseException{
		return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+xx+"mm"+xx+"ss").parse(date_str);
	}
	
	public static String yyyyXMMXdd_HHXmmXss(Date date, String x, String xx) throws ParseException{
		return new SimpleDateFormat("yyyy"+x+"MM"+x+"dd "+"HH"+xx+"mm"+xx+"ss").format(date);
	}

	public static void main(String[] args){
		Date date = new Date();
		System.out.println(getDateStrByFormat("yyyyMMdd",date));
		date = getTomorrow(date);
		System.out.println(getDateStrByFormat("yyyyMMdd",date));
		try {
			System.out.println(getAfterOrBeforeDate("2014-12-02", -1*1));
			System.out.println(getFirstDayInMonth(new Date()));
			System.out.println(getLastDayInMonth(new Date()));
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值