一个时间类


	/**
	 * 从字符串类型获取日期Date
	 * @param dateStr  日期字符串,如:20080321
	 * @param format  格式化模式,如yyyymmdd 和dateStr保持一致的格式
	 * @return 返回一个Date类型日期
	 * @throws Exception
	 */
	public static Date getDateFromString(String dateStr, String format) {

		if (dateStr == null || format == null) {
			try {
				throw new Exception("数据类型异常" + dateStr + "|" + format);
			} catch (Exception e) {
				System.err.println("数据类型异常");
			}
		}

		SimpleDateFormat df = new SimpleDateFormat(format);
		Date date;
		try {
			date = df.parse(dateStr);
			return date;
		} catch (Exception ex) {
			return new Date();
		}
	}

	/**
	 * Calendar类型转换成Date类型日期
	 * 
	 * @param calendar
	 * @return
	 */
	public static Date getDateFromCalendar(Calendar calendar) {
		return calendar.getTime();
	}

	/**
	 * Timestamp类型转换成Date类型日期
	 * 
	 * @param timestamp
	 * @param format
	 * @return
	 */
	public static Date getDateFromTimestamp(Timestamp timestamp, String format) {
		return getDateFromString(timestamp.toString(), format);
	}

	/**
	 * String类型转换成Timestamp类型日期
	 * 
	 * @param dateStr
	 *            日期字符串
	 * @return
	 * @throws Exception
	 */
	public static Timestamp getTimestampFromString(String dateStr)
			throws Exception {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
		return Timestamp.valueOf(sdf.format(getDateFromString(dateStr,
				"yyyyMMdd")));
	}

	/**
	 * Calendar类型转换Timestamp类型的日期
	 * 
	 * @param calendar
	 *            参数是Calendar类型
	 * @return
	 */
	public static Timestamp getTimestampFromCalendar(Calendar calendar) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
		return Timestamp.valueOf(sdf.format(calendar.getTime()));
	}

	/**
	 * Date类型转换Timestamp类型的日期
	 * 
	 * @param date
	 * @return
	 */
	public static Timestamp getTimestampFromDate(Date date) {
		try {
			return getTimestampFromString(getStringFromDate(date, "yyyy-MM-dd"));
		} catch (Exception e) {
			// System.out.println("获取日期出错");
			return null;
		}
	}

	/**
	 * String(字符串类型)转换成Calendar类型的日期
	 * 
	 * @param dateStr
	 * @return
	 */
	public static Calendar getCalendarFromString(String dateStr) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(getDateFromString(dateStr, "yyyymmdd"));
		return calendar;
	}

	/**
	 * Date类型转换成Calendar类型日期
	 * 
	 * @param date
	 * @return
	 */
	public static Calendar getCalendarFromDate(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar;
	}

	/**
	 * Timestamp类型转换成Calendar类型日期
	 * 
	 * @param timestamp
	 * @return
	 */
	public static Calendar getCalendarFromTimestamp(Timestamp timestamp) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(getDateFromTimestamp(timestamp, "yyyymmdd"));
		return calendar;
	}

	/**
	 * Date类型转换成String(字符串)类型的日期
	 * 
	 * @param date
	 * @return
	 */
	public static String getStringFromDate(Date date, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}

	/**
	 * Calendar类型转换成String类型的日期
	 * 
	 * @param celendar
	 * @return
	 */
	public static String getStringFromCalendar(Calendar celendar, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(celendar.getTime());
	}

	/**
	 * Timestamp类型转换成String类型的日期
	 * 
	 * @param timestamp
	 * @return
	 */
	public static String getStringFromTimestamp(Timestamp timestamp) {
		return timestamp.toString();
	}

	/**
	 * 格式化format
	 * 
	 * @param dateStr
	 * @param format
	 * @return
	 */
	public static String getStringFormat(String dateStr, String format) {

		SimpleDateFormat sdf = new SimpleDateFormat(format);
		String result = "";

		try {
			result = sdf.format(dateStr);
		} catch (Exception e) {
			System.out.println("出现错误");
		}

		return result;

	}

	/**
	 * 是否为某个月的最后一天
	 * 
	 * @param days
	 * @param month
	 * @param year
	 * @return
	 */
	public static boolean isLastDayOfMonth(int days, int month, int year) {
		month = month - 1;
		int monthCompare = month;
		Calendar calendar = Calendar.getInstance();
		// calendar.set(year, month, days);
		calendar.set(Calendar.DAY_OF_MONTH, days);
		calendar.set(Calendar.MONTH, month);
		calendar.set(Calendar.YEAR, year);
		// System.out.println("月份:"+(calendar.get(Calendar.MONTH)+1));
		// System.out.println("几号:"+calendar.get(Calendar.DAY_OF_MONTH));
		calendar.add(Calendar.DAY_OF_MONTH, 1);
		// System.out.println("月份:"+(calendar.get(Calendar.MONTH)+1));
		// System.out.println("几号:"+calendar.get(Calendar.DAY_OF_MONTH));
		if (monthCompare != calendar.getInstance().MONTH) {
			return true;
		}
		return false;
	}

	//	
	// /**
	// * @param args
	// * @throws ParseException
	// */
	// public static void main(String[] args) throws ParseException {
	// DateTool dateTool=new DateTool();
	// //测试是否为最后一天。。。
	// boolean b=dateTool.isLastDayOfMonth(29, 02, 2007);
	// if(b){s
	// System.out.println("最后一天");
	// }else{
	// System.out.println("不是最后一天");
	// }
	// Date date=new Date();
	// SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
	// sdf.format(date);
	//		
	// Date date1=new Date();
	//		
	// Date date2=new Date();
	//		
	// System.out.println(getTimestampFromDate(date1).toString());
	// }

	/**
	 * 获取当前的月份的几号
	 * 
	 * @return
	 */
	public static int getCurrentDayOfMonth() {
		return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 获取当前的月份
	 * 
	 * @return
	 */
	public static int getCurrentMonth() {
		return Calendar.getInstance().get(Calendar.MONTH);
	}

	/**
	 * 获取当前的年
	 * 
	 * @return
	 */
	public static int getCurrentYear() {
		return Calendar.getInstance().get(Calendar.YEAR);
	}

	/**
	 * 获取当前的日期是一年中的第几天
	 * 
	 * @return
	 */
	public static int getCurrentDayOfYear() {
		return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
	}

	/**
	 * 获取当前的日期在当前月中是第几周
	 * 
	 * @return
	 */
	public static int getCurrentWeekOfMonth() {
		return Calendar.getInstance().get(Calendar.WEEK_OF_MONTH);
	}

	/**
	 * 获取当前的日期在当前年里的第几周
	 * 
	 * @return
	 */
	public static int getCurrentWeekOfYear() {
		return Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
	}

	/**
	 * 获取指定calendar的月中的几号
	 * 
	 * @param calendar
	 * @return 返回月份值,是一个int型数据
	 */
	public static int getDayOfMonth(Calendar calendar) {
		return calendar.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 获取指定calendar的月份
	 * 
	 * @param calendar
	 * @return 返回月份值,是一个int型数据
	 */
	public static int getMonth(Calendar calendar) {
		return calendar.get(Calendar.MONTH) + 1;
	}

	/**
	 * 获取指定calendar的年
	 * 
	 * @param calendar
	 * @return 返回年值,是一个int型数据
	 */
	public static int getYear(Calendar calendar) {
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 获取指定calendar中年份中的第几天
	 * 
	 * @param calendar
	 * @return
	 */
	public static int getDayOfYear(Calendar calendar) {
		return calendar.get(Calendar.DAY_OF_YEAR);
	}

	/**
	 * 获取指定calendar的月中的第几周
	 * 
	 * @param calendar
	 * @return
	 */
	public static int getWeekOfMonth(Calendar calendar) {
		return calendar.get(Calendar.WEEK_OF_MONTH);
	}

	/**
	 * 获取指定calendar的年中的第几周
	 * 
	 * @param calendar
	 * @return
	 */
	public static int getWeekOfYear(Calendar calendar) {
		return calendar.get(Calendar.WEEK_OF_YEAR);
	}

	/**
	 * 得到两个日期之间相差多少天 
	 * @param beginDate  开始日期
	 * @param endDate    结束日期
	 * @return
	 */
	public static int dateDiff(String beginDate,String endDate){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			date = sdf.parse(endDate);
		} catch (ParseException e) {
			date = new Date();
			e.printStackTrace();
		}
		
		
		long end 	= date.getTime();
		try {
			date = sdf.parse(beginDate);
		} catch (ParseException e) {
			date = new Date();
			e.printStackTrace();
		}
		long  begin 	= date.getTime();
		
		long day = (end-begin)/(1000*3600*24);		//除1000是把毫秒变成秒
		
		return Integer.parseInt(Long.toString(day));		
	}

	/**
	 * 日期推迟
	 * 
	 * @param date
	 *            需要推迟的日期
	 * @param dayNumber
	 *            需要推迟的天数
	 * @return 返回新的日期
	 */
	public static Date dateAdd(Date date, int dayNumber) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_MONTH, dayNumber);
		return calendar.getTime();
	}
/**
	 * 得到某种类型的中间的所有日期.格式为"yyyy-MM-dd"	
	 * @param beginDate
	 * @param endDate
	 * @return
	 */
	public static String[] getDaysByRang(String beginDate,String endDate){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		
		//得到两个日期间相差多少天
		int num = dateDiff(beginDate,endDate);
		if(num<0){
			//颠倒一下日期
			String tmp = beginDate;
			beginDate = endDate;
			endDate = tmp;
			num = 0-num;
		}
		
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		try {
			cal.setTime(sdf.parse(beginDate));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		
		num = num + 1;	//把开始和结束日期都包含进去
		
		result = new String[num];
		for(int i=0;i<num;i++){
			if(i>0)	cal.add(Calendar.DAY_OF_YEAR, 1);
			result[i] = sdf.format(new Date(cal.getTimeInMillis()));
		}
		
		return result;
	}
	
	/**
	 * 得到最近num天的全部日期
	 * 说明:	
	 * 	1.日期是从昨天开始算的.
	 *  2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-12、2008-03-13
	 * @param num
	 * @return
	 */
	public static String[] getDaysByNum(int num){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		
		//最近一周
		result = new String[num];
		for(int i=num;i>0;i--){
			cal.add(Calendar.DAY_OF_YEAR, -1);
			result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
		}
		
		return result;
	}
	
	
	
	/**
	 * 得到最近num天的全部日期
	 * 说明:	
	 * 	1.日期是从昨天开始算的.
	 *  2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-12、2008-03-13
	 * @param num
	 * @return
	 */
	public static String[] getDaysByNum(int num,String date){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		cal.setTime(getDateFromString(date, "yyyy-MM-dd"));
		
		//最近一周
		result = new String[num];
		for(int i=num;i>0;i--){
			cal.add(Calendar.DAY_OF_YEAR, -1);
			result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
		}
		
		return result;
	}
	
	
	/**
	 * 得到最近num天的全部日期
	 * 说明:	
	 * 	1.日期是从今天开始算的.
	 *  2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-13、2008-03-14
	 * @param num
	 * @return
	 */
	public static String[] getDaysByBefore(int num,String date){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String[] result = {} ;
		Calendar cal = Calendar.getInstance() ;
		cal.setTime(getDateFromString(date, "yyyy-MM-dd"));
		cal.add(Calendar.DAY_OF_YEAR, 1);
		//最近num的日期,包括date日期
		result = new String[num];
		for(int i=num;i>0;i--){	
			cal.add(Calendar.DAY_OF_YEAR, -1);
			result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
			
		}
		
		return result;
	}

你可能感兴趣的:(一个时间类)