java中使用日期组件举例

下边代码用于获取不同的日期,作为字典用起来比较方便,记录在此:
package com.timelypower.util;

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

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

public class DateUtils {

	private final static String dateFormat = "yyyy-MM-dd";
	private static Log log = LogFactory.getLog(DateUtils.class);
	
	/**
	 * 按照指定格式返回格式好的当前日期
	 * @param dateFormat 默认yyyy-MM-dd
	 * @return
	 */
	public static String getCurrentDateString(String dateFormat){
		return DateUtils.format(new Date(), dateFormat);
	}
	/**
	 * 说明 将日期格式化字符串,为null的返回空字符串
	 * @param date
	 * @return
	 */
	public static String format(Date date){
		if(null == date)
			return "";
		SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
		return sf.format(date);
	}
	/**
	 * 说明 将日期格式化字符串,为null的返回空字符串
	 * @param date 日期
	 * @param dateFormat 格式化字符串,比如:yyyy-MM-dd
	 * @return
	 */
	public static String format(Date date,String dateFormat){
		if(null == dateFormat || "".equals(dateFormat))
			return DateUtils.format(date);
		if(null == date)
			return "";
		SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
		return sf.format(date);
	}
	
	/**
	 * @说明 将指定的字符串格解析成日期类型,格式默认为:yyyy-MM-dd
	 * @param source 要进行解析的源字符串
	 * @return
	 */
	public static Date parase(String source)
	{
		SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
		try {
			return sf.parse(source);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			log.info("DataUtils.parase方法出错:"+e.getMessage());
		}
		return null;
	}
	/**
	 * @说明 将指定的字符串格解析成日期类型 例:如果日期source=20131210,则dateFormat应为:yyyyMMdd,两个应对应
	 * @param source 要进行解析的源字符串
	 * @param dateFormat 要解析的日期格式。
	 * @return
	 */
	public static Date parase(String source,String dateFormat )
	{
		SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
		try {
			return sf.parse(source);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			log.info("DataUtils.parase方法出错:"+e.getMessage());
		}
		return null;
	}
	
	/**
	 * @说明 对指定的日期增加或减少指定的天数
	 * @param date
	 * @param days
	 */
	public static Date addDays(Date date,int days){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		
		cal.add(Calendar.DAY_OF_MONTH, days);
		
		return cal.getTime();
	}
	
	/**
	 * @说明 对指定的日期增加或减少指定的天数
	 * @param date
	 * @param days
	 */
	public static Calendar addDays(Calendar date,int days){
		
		date.add(Calendar.DAY_OF_MONTH, days);
		
		return date;
	}
	
	/**
	 * @说明 对指定的日期增加或减少指定的月数
	 * @param date
	 * @param months
	 * @return
	 */
	public static Date addMonths(Date date,int months){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		
		cal.add(Calendar.MONTH, months);
		
		return cal.getTime();
	}
	
	/**
	 * @说明 对指定的日期增加或减少指定的月数
	 * @param date
	 * @param months
	 * @return
	 */
	public static Calendar addMonths(Calendar date,int months){
		date.add(Calendar.MONTH, months);
		
		return date;
	}
	
	/**
	 * @说明 对指定的日期增加或减少指定的小时数
	 * @param date
	 * @param hours
	 * @return
	 */
	public static Date addHours(Date date ,int hours){
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		
		cal.add(Calendar.HOUR_OF_DAY, hours);
		
		return cal.getTime();
	}
	
	/**
	 * @说明 对指定的日期增加或减少指定的小时数 
	 * @param date
	 * @param hours
	 * @return
	 */
	public static Calendar addHours(Calendar date ,int hours){
		date.add(Calendar.HOUR_OF_DAY, hours);
		return date;
	}
	
	/**
	 * @说明 以字符串形式返回当前时间的毫秒数
	 * @return
	 */
	public static String getTimeMillions(){
		Calendar cal = Calendar.getInstance();
		long lt = cal.getTimeInMillis();
		
		return String.valueOf(lt);
	}
	/**
	 * 获取当前月的第一天
	 * @return 当前月的第一天
	 */
	public static String getMonthFirstDay() {
        SimpleDateFormat df = new SimpleDateFormat(dateFormat);
        Calendar calendar = Calendar.getInstance();
        Date theDate = calendar.getTime();
        
        GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
        gcLast.setTime(theDate);
        gcLast.set(Calendar.DAY_OF_MONTH, 1);
        String day_first = df.format(gcLast.getTime());
        StringBuffer str = new StringBuffer().append(day_first);
        return str.toString();

    }
    
    /**
	 * 获取当前月的最后一天
	 * @return 当前月的最后一天
	 */
	public static String getMonthLastDay() {
    	
    	Calendar calendar = Calendar.getInstance();
        //最后一天
         int maxday = calendar.getActualMaximum(Calendar.DATE);
         calendar.set(Calendar.DATE,maxday);
          
        SimpleDateFormat df = new SimpleDateFormat(dateFormat);
        Date theDate = calendar.getTime();
        String s = df.format(theDate);
        StringBuffer str = new StringBuffer().append(s);
        return str.toString();

    }
	/**
	 * 获得往数据库字段类型为Date型时,插入的时间
	 * @param date 默认为当前日期,如果为空时 方法会自动new Date()
	 * @param dateFormat 默认为yyyy-MM-dd
	 * @return
	 */
	public static java.sql.Date paraseSqlDate(String date,String dateFormat){
		try {
			if(date == null || date.length() == 0){
				return new java.sql.Date(new Date().getTime());
			}else{
				if(dateFormat == null)
					dateFormat = DateUtils.dateFormat;
				SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
				Date d = sf.parse(date);
				return new java.sql.Date(d.getTime());
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return null;
	}
	
	
	public static void main(String[] args) {
		System.out.println(DateUtils.format(DateUtils.addMonths(new Date(), -12)));
		System.out.println(getMonthLastDay());;
		System.out.println(getMonthFirstDay());;
	}
}

你可能感兴趣的:(java)