欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Date Format

程序员文章站 2022-07-14 23:52:08
...
public class  DateFormate {
	
	/**
	 * 日期格式化函数 将日期类型转化为字符串类型
	 * @param date 日期
	 * @return 字符串形式如: "yyyy-MM-dd"
	 */
	public String getString(Date date){
		SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd");
		String str = sdft.format(date);
		return str;
	}
	
	/**
	 * 日期格式化函数 将日期类型转化为字符串类型
	 * @param date 日期
	 * @return 字符串
	 */
	public String getString_Date(Date date){
		SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		
		String str = sdft.format(date);
		
		return str;
	}
	
		
	/**
	 * 日期格式化函数 将字符串类型转化为日期类型
	 * @param str 字符串
	 * @return 日期
	 * @throws ParseException 
	 */
	public Date getDate(String str) throws ParseException{
		SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd");
		Date date = new Date();
		date = sdft.parse(str);
		
		return date;
	}
	/**
	 * 日期格式化函数 将字符串类型转化为日期类型
	 * @param str 字符串
	 * @return 日期
	 * @throws ParseException 
	 */
	public Date getDate_sfm(String str){
		SimpleDateFormat sdft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		Date date = new Date();
		try {
			date = sdft.parse(str);
		} catch (ParseException e) {
		}
		return date;
	}
	public static Date convertStrToDate(String strDate) throws ParseException {
		Date date = null;
		date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(strDate);
		return date;
	} 
	
	/**
	 * 根据给定的字符串型日期格式,求出两个日期之间相差的月份数
	 * @param pFormerStr 字符串型日期
	 * @param pLatterStr 字符串型日期
	 * @return 月份数
	 */
	public static int monthsBetween(String pFormerStr, String pLatterStr) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date d = null;
		Date dd = null;
		try {
			d = format.parse(pFormerStr);
			dd = format.parse(pLatterStr);
		} catch (Exception e) {
			e.printStackTrace();
		}
		GregorianCalendar vFormer = (GregorianCalendar) GregorianCalendar
				.getInstance();
		vFormer.setTime(d);
		GregorianCalendar vLatter = (GregorianCalendar) GregorianCalendar
				.getInstance();
		vLatter.setTime(dd);
		return monthsBetween(vFormer, vLatter);
	}

	/**
	 * 根据给定的日期,求出两个日期之间相差的月份数
	 * @param pFormer 日期
	 * @param pLatter 日期
	 * @return 月份数
	 */
	public static int monthsBetween(GregorianCalendar pFormer,
			GregorianCalendar pLatter) {
		GregorianCalendar vFormer = pFormer, vLatter = pLatter;
		boolean vPositive = true;
		if (pFormer.before(pLatter)) {
			vFormer = pFormer;
			vLatter = pLatter;
		} else {
			vFormer = pLatter;
			vLatter = pFormer;
			vPositive = false;
		}

		int vCounter = 1;
		while (vFormer.get(vFormer.YEAR) != vLatter.get(vLatter.YEAR)
				|| vFormer.get(vFormer.MONTH) != vLatter.get(vLatter.MONTH)) {
			vFormer.add(Calendar.MONTH, 1);
			
			vCounter++;
		}
		if (vPositive)
			return vCounter;
		else
			return -vCounter;
	}
	/**
	 * 求给定日期的当前月份
	 * @param date1 字符串型给定日期
	 * @return 月份值
	 * @throws ParseException 
	 */
	public static int getMon(String date1) throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date d = null;
		d = format.parse(date1);
		Calendar cal1 = Calendar.getInstance();
		cal1.setTime(d);
		int returnbool = cal1.get(Calendar.MONTH) + 1;
		return returnbool;
	}
	
	/**
	 * 根据年份月份返回某月的最后一天,如2009-05-06返回的是2009-05-31
	 * @param dateStr 日期
	 * @return 月份
	 */
	public static String getMonthL(String dateStr) throws ParseException {
		String returndate = dateStr;
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		date = format.parse(dateStr);
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.DAY_OF_MONTH, cal
				.getActualMaximum(Calendar.DAY_OF_MONTH));
		returndate = format.format(cal.getTime());
		return returndate;
	}
}