java日期格式化类

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

/**
 * java Data类的辅助转换�
 */
public class DateFormatUtils {
	
	private DateFormatUtils(){}
	/**
	 * String To String
	 * @param str MM/dd/yyyy格式的字符串日期
	 * @return  yyyy-MM-dd格式的字符串日期
	 */
	public static String parseDate(String str) {
		if(str==null || "".equals(str)){
			return null;
		}else{
			SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
			try {
				Date beginDate = sdf.parse(str);
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
				return df.format(beginDate);
			} catch (ParseException e) {
				e.printStackTrace();
				return null;
			}
		}
	}
	
	/**
	 * String To Date
	 * @param str yyyy/MM/dd格式的字符串日期
	 * @return     yyyy/MM/dd格式的Date
	 */
	public static Date strParseDate(String str){
		if(str==null || "".equals(str)){
			return null;
		}else{
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
			try{
				Date d = sdf.parse(str);
				return d;
			}catch(Exception e){
				e.printStackTrace();
				return null;
			}
		}
	}
	
	/**
	 * String To Date
	 * 接收一个字符串,转换成相对应的日期对象
	 */
	public static Date stringToDate(String str,int flag){
		if(str==null || "".equals(str)){
			return null;
		}else{
			SimpleDateFormat sdf = null;
			if(flag==0){
				sdf = new SimpleDateFormat("yyyy-MM-dd");
			}else if(flag==1){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			}else if(flag==2){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			}else if(flag==3){
				sdf = new SimpleDateFormat("yyyy");
			}else if(flag==4){
				sdf = new SimpleDateFormat("yyyy-MM");
			}
			try{
				return sdf.parse(str);
			}catch(Exception e){
				e.printStackTrace();
				return null;
			}
		}
	}
	
	/**
	 * Date To String
	 * @param date 日期 yyyy-MM-dd格式的date类型
	 * @param flag 0:表示只显示年月日,1:加上时分,2:加上时分秒
	 * @return yyyy-MM-dd型的字符串
	 */
	public static String parseToString(Date date,int flag){
		if(date==null){
			return null;
		}else{
			SimpleDateFormat sdf = null;
			if(flag==0){
				sdf = new SimpleDateFormat("yyyy-MM-dd");
			}else if(flag==1){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			}else if(flag==2){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			}else if(flag==3){
				sdf = new SimpleDateFormat("yyyy");
			}else if(flag==4){
				sdf = new SimpleDateFormat("yyyy-MM");
			}else
				sdf = new SimpleDateFormat("yyyy-MM-dd");
			try{
				String str = sdf.format(date);
				return str;
			}catch(Exception e){
				e.printStackTrace();
				return null;
			}
		}
	}
	
	/**
	 * String To Date
	 * @param str MM/dd/yyyy格式的字符串日期
	 * @return     yyyy/MM/dd格式的Date
	 */
	public static Date strParseDate2(String str){
		if(str==null || "".equals(str)){
			return null;
		}else{
			SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
			try{
				Date d = sdf.parse(str);
				return d;
			}catch(Exception e){
				e.printStackTrace();
				return null;
			}
		}
	}
	
	
	/**
	 * Date To String
	 * 日期型转化为字符串
	 * @param date:日期对象
	 * @param flag:显示的格式{
	 * 	0:YYYY-MM-DD
	 * 	1:YYYY-MM-DD hh:mm
	 * 	2:YYYY-MM-DD hh:mm:ss
	 * }
	 * @return:返回日期字符串
	 */
	public static String DateToString(Date date,int flag){
		if(date==null){
			return null;
		}else{
			SimpleDateFormat sdf;
			
			if(flag==0){
				sdf = new SimpleDateFormat("yyyy-MM-dd");
			}else if(flag==1){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			}else if(flag==2){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			}else if(flag==3){
				sdf = new SimpleDateFormat("yyyy");
			}else if(flag==4){
				sdf = new SimpleDateFormat("yyyy-MM");
			}else
				sdf = new SimpleDateFormat("yyyy-MM-dd");
			try{
				return sdf.format(date);
			}catch(Exception e){
				e.printStackTrace();
				return null;
			}
		}
	}
	/**
	 * String To Date
	 * 字符串转化为日期型
	 * @param date:日期对象
	 * @param flag:显示的格式{
	 * 	0:YYYY-MM-DD
	 * 	1:YYYY-MM-DD hh:mm
	 * 	2:YYYY-MM-DD hh:mm:ss
	 *  3: YYYY
	 *  4: YYYY-MM
	 * }
	 * @return:返回日期字符串
	 */
	public static Date StrToDate(String str,int flag){
		if(str==null || "".equals(str)){
			return null;
		}else{
			SimpleDateFormat sdf;
			Date date = null;
			if(flag==0){
				sdf = new SimpleDateFormat("yyyy-MM-dd");
			}else if(flag==1){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			}else if(flag==2){
				sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			}else if(flag==3){
				sdf = new SimpleDateFormat("yyyy");
			}else if(flag==4){
				sdf = new SimpleDateFormat("yyyy-MM");
			}else
				sdf = new SimpleDateFormat("yyyy-MM-dd");
			
			try {
				date = sdf.parse(str);
			} catch (ParseException e) {
				e.printStackTrace();
			}
			return date;
		}
	}
	
	public static void main(String args[]){
		Date d = new Date();
		System.out.println("为:"+DateToString(d,0));
		System.out.println("为:"+DateToString(d,1));
		System.out.println("为:"+DateToString(d,2));
		System.out.println("为:"+DateToString(d,3));
		System.out.println("为:"+DateToString(d,4));
		System.out.println("为:"+DateToString(d,5));
		
		//////////////////////////////////////////////
		/**
		 * stringToDate方法中,日期字符串的精度要>=SimpleDateFormat实例的精度,
		 * 比如一个精确到时分的字符串,除了flag为2的不能解析,其它都可以
		 */
		String str = "2011-12-26 18:55:10";
		str = "    2011-12-26          18:55:10       "; //这种字符串格式的 也可以正常转化
		str = "2011-12-26 18:55";
		System.out.println("为:"+stringToDate(str, 0));
		System.out.println("为:"+stringToDate(str, 1));
		System.out.println("为:"+stringToDate(str, 2));
		System.out.println("为:"+stringToDate(str, 3));
		System.out.println("为:"+stringToDate(str, 4));
		System.out.println("为:"+stringToDate(str, 5));
	}
}

你可能感兴趣的:(java)