java时间操作

package com.bq.jframe.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import com.bq.components.exutils.LabelValueBean;

/**
 * @作者 UAreMyEyes
 * @创建时间 2012-10-10
 * @说明 
 */
public class DateTimeUtil {

		private DateTimeUtil(){}
		
		public static String formatDateTime(String ymd) {
			// 格式化当前时间
			java.text.SimpleDateFormat isNow = new java.text.SimpleDateFormat(ymd);
			String now = isNow.format(new java.util.Date());
			return now;
		}

		public static String formatDateTime(String ymd, String datetime) {
			// 格式化当前时间
			java.text.SimpleDateFormat isNow = new java.text.SimpleDateFormat(ymd);
			String now = "";
			try {
				now = isNow.format(datetime);
			} catch (Exception e) {
				e.printStackTrace();
			}
			return now;
		}

		/**
		 * 取得当前年
		 * 
		 * @return 2007
		 */
		public static String getTodayYear() {
			SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy");
			return simpledateformat.format(new java.util.Date());
		}

		/**
		 * 取得当前月
		 * 
		 * @return 04
		 */
		public static String getTodayMonth() {
			SimpleDateFormat simpledateformat = new SimpleDateFormat("MM");
			return simpledateformat.format(new java.util.Date());
		}

		/**
		 * 取得当前天
		 * 
		 * @return 04
		 */
		public static String getTodayDay() {
			SimpleDateFormat simpledateformat = new SimpleDateFormat("dd");
			return simpledateformat.format(new java.util.Date());
		}

		/**
		 * 取得当前年月
		 * 
		 * @return 2004-04
		 */
		public static String getTodayYearMonth() {
			SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM");
			return simpledateformat.format(new java.util.Date());
		}

		/**
		 * 取得今天日期
		 * 
		 * @return 2007-04-04
		 */
		public static String getToday() {
			SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
			return simpledateformat.format(new java.util.Date());
		}

		/**
		 * 取得今天完整 日期时间
		 * 
		 * @return 2007-04-04 12:12:12
		 */
		public static String getTodayDateTime() {
			SimpleDateFormat simpledateformat = new SimpleDateFormat(
					"yyyy-MM-dd HH:mm:ss");
			return simpledateformat.format(new java.util.Date());
		}

		/**
		 * 取得今天完整时间
		 * 
		 * @return 12:12:12
		 */
		public static String getTodayTime() {
			SimpleDateFormat simpledateformat = new SimpleDateFormat("HH:mm:ss");
			return simpledateformat.format(new java.util.Date());
		}

		/**
		 * 比较当前日期和指定日期 return boolean 如果当前日期在指定日期之后返回true否则返回flase
		 */
		public static boolean dateCompare(String str) {
			boolean bea = false;
			SimpleDateFormat sdf_d = new SimpleDateFormat("yyyy-MM-dd");
			String isDate = sdf_d.format(new java.util.Date());
			java.util.Date date1;
			java.util.Date date0;
			try {
				date1 = sdf_d.parse(str);
				date0 = sdf_d.parse(isDate);
				if (date0.after(date1)) {
					bea = true;
				}
			} catch (ParseException e) {
				bea = false;
			}
			return bea;
		}

		/*
		 * 比较当前月份和指定月份 如果当前月份在指定月份之后返回true否则返回flase
		 */
		public static boolean monthCompare(String str) {
			boolean bea = false;
			SimpleDateFormat sdf_m = new SimpleDateFormat("yyyy-MM");
			String isMonth = sdf_m.format(new java.util.Date());
			java.util.Date date1;
			java.util.Date date0;
			try {
				date1 = sdf_m.parse(str);
				date0 = sdf_m.parse(isMonth);
				if (date0.after(date1)) {
					bea = true;
				}
			} catch (ParseException e) {
				bea = false;
			}
			return bea;
		}

		/*
		 * 比较当前日期和指定日期 return boolean 如果当前日期在指定日期之后返回true否则返回flase
		 */
		public static boolean secondCompare(String str) {
			boolean bea = false;
			SimpleDateFormat sdf_d = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String isDate = sdf_d.format(new java.util.Date());
			java.util.Date date1;
			java.util.Date date0;
			try {
				date1 = sdf_d.parse(str);
				date0 = sdf_d.parse(isDate);
				if (date0.after(date1)) {
					bea = true;
				}
			} catch (ParseException e) {
				bea = false;
			}
			return bea;
		}

		/**
		 * 比较指定两日期如果str1晚于str2则return true;
		 * 
		 * @param str1
		 * @param str2
		 * @return
		 */
		public static boolean secondCompare(String str1, String str2) {
			boolean bea = false;
			SimpleDateFormat sdf_d = new SimpleDateFormat("yyyy-MM-dd");
			java.util.Date date1;
			java.util.Date date0;
			try {
				date1 = sdf_d.parse(str1);
				date0 = sdf_d.parse(str2);
				if (date0.after(date1)) {
					bea = true;
				}
			} catch (ParseException e) {
				bea = false;
			}
			return bea;
		}

		/**
		 * 设置间隔数后返回时间
		 * 
		 * @param type
		 *            间隔类型 秒或者天
		 * @param 间隔数字
		 *            比如1秒或者一天
		 * @return
		 */
		public static String dateAdd(String type, int i) {
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String str = formatDateTime("yyyy-MM-dd HH:mm:ss");
			Calendar c = Calendar.getInstance(); // 当时的日期和时间
			if (type.equals("s")) {
				int s = c.get(Calendar.SECOND);
				s = s + i;
				c.set(Calendar.SECOND, s);
				str = df.format(c.getTime());
			} else if (type.equals("d")) {
				int d = c.get(Calendar.DAY_OF_MONTH); // 取出“日”数
				d = d + i;
				c.set(Calendar.DAY_OF_MONTH, d); // 将“日”数设置回去
				str = df.format(c.getTime());
			} else if (type.equals("m")) {
				int m = c.get(Calendar.MONTH);
				m = m + i;
				c.set(Calendar.MONTH, m);
				str = df.format(c.getTime());
			} else if (type.equals("y")) {
				int y = c.get(Calendar.YEAR);
				y = y + i;
				c.set(Calendar.YEAR, y);
				str = df.format(c.getTime());
			}
			return str;
		}

		/**
		 * 根据输入的日期,设置间隔数后返回时间
		 * 
		 * @param date
		 *            日期(2009-03-03 12:12:12)
		 * @param type
		 *            间隔类型 秒或者天(s,d,m,y)
		 * @param 间隔数字
		 *            比如1秒或者一天
		 * @return
		 */
		public static String dateAdd(String dateStr, String type, int i) {
			String str = "";
			try {
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
				Date date = df.parse(dateStr);
				// 当时的日期和时间
				Calendar c = Calendar.getInstance();
				c.setTime(date);
				if (type.equals("s")) {
					int s = c.get(Calendar.SECOND);
					s = s + i;
					c.set(Calendar.SECOND, s);
					str = df.format(c.getTime());
				} else if (type.equals("d")) {
					int d = c.get(Calendar.DAY_OF_MONTH); // 取出“日”数
					d = d + i;
					c.set(Calendar.DAY_OF_MONTH, d); // 将“日”数设置回去
					str = df.format(c.getTime());
				} else if (type.equals("m")) {
					int m = c.get(Calendar.MONTH);
					m = m + i;
					c.set(Calendar.MONTH, m);
					str = df.format(c.getTime());
				} else if (type.equals("y")) {
					int y = c.get(Calendar.YEAR);
					y = y + i;
					c.set(Calendar.YEAR, y);
					str = df.format(c.getTime());
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			return str;
		}

		/**
		 * 年增加
		 * 
		 * @author HPang
		 * @param date
		 * @param i
		 * @return
		 */
		public static String yearAdd(String date, int i) {
			String year = date.substring(0, 4);
			date = date.substring(4, 10);
			year = String.valueOf(Integer.parseInt(year) + i);
			return year + date;

		}

		/**
		 * 年减少
		 * 
		 * @author HPang
		 * @param date
		 * @param i
		 * @return
		 */
		public static String yearMinus(String date, int i) {
			String year = date.substring(0, 4);
			date = date.substring(4, 10);
			year = String.valueOf(Integer.parseInt(year) - i);
			return year + date;
		}

		/**
		 * 计算两个日期之间差几个月
		 * 
		 * @author HPang
		 * @param beginDate
		 * @param endDate
		 * @return
		 */
		public static Integer betweenMonths(String beginDate, String endDate) {
			Integer months = null;
			int beginYear = Integer.parseInt(beginDate.substring(0, 4));
			int endYear = Integer.parseInt(endDate.substring(0, 4));
			int beginMonth = Integer.parseInt(beginDate.substring(5, 7));
			int endMonth = Integer.parseInt(endDate.substring(5, 7));
			int beginDay = Integer.parseInt(beginDate.substring(8, 10));
			int endDay = Integer.parseInt(endDate.substring(8, 10));

			int year = endYear - beginYear;
			int month = endMonth - beginMonth;
			int day = endDay - beginDay;

			if (year == 0) {
				if (month == 0) {
					if (day == 0)
						months = new Integer(0);
					else if (day > 0)
						months = new Integer(1);
				} else if (month > 0)
					months = new Integer(month);
			} else if (year > 0) {
				if (month == 0) {
					if (day == 0)
						months = new Integer(12 * year);
					else if (day > 0)
						months = new Integer(12 * year + 1);
				} else if (month > 0)
					months = new Integer(12 * year + month);
				else {
					months = new Integer(12 * year + month + 1);
				}
			}
			return months;
		}

		/**
		 * 计算两个日期之间差多少天
		 * 
		 * @author HPang
		 * @param begin
		 * @param end
		 * @return
		 */
		public static Long betweenDays(String begin, String end) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
			Long betweenDays = null;
			try {
				Date beginDate = formatter.parse(begin);
				Date endDate = formatter.parse(end);
				long beginTime = beginDate.getTime();
				long endTime = endDate.getTime();
				betweenDays = new Long((long) ((endTime - beginTime)
						/ (1000 * 60 * 60 * 24) + 0.5));

				return betweenDays;
			} catch (ParseException e) {
				e.printStackTrace();
				return null;
			}
		}

		/**
		 * 返回年度列表(升序)
		 * 
		 * @author HPang
		 * @return
		 */
		@SuppressWarnings("unchecked")
		public static List<LabelValueBean> getYears(String startYear) {
			int start_year = 1990;
			Vector rtnList = new Vector();
			Calendar cal = Calendar.getInstance();
			int curr_year = cal.get(Calendar.YEAR);
			for (int i = start_year; i <= curr_year; i++) {
				String year = String.valueOf(i);
				rtnList.add(new LabelValueBean(year, year));
			}
			return rtnList;
		}

		/**
		 * 返回指定年度以前的年度列表(升序,包含指定年度)
		 * 
		 * @author HPang
		 * @return List<LabelValueBean>
		 */
		public static List<LabelValueBean> getYears(int curYear) {
			int start_year = 1990;
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			for (int i = start_year; i <= curYear; i++) {
				String year = String.valueOf(i);
				rtnList.add(new LabelValueBean(year, year));
			}
			return rtnList;
		}

		/**
		 * 返回年度列表(降序)
		 * 
		 * @author HPang
		 * @return
		 */
		@SuppressWarnings("unchecked")
		public static List<LabelValueBean> getYearsByDesc() {
			Vector rtnList = new Vector();
			Calendar cal = Calendar.getInstance();
			int curr_year = cal.get(Calendar.YEAR);
			int show_year = (curr_year - 10);
			for (int i = curr_year; i >= show_year; i--) {
				String year = String.valueOf(i);
				rtnList.add(new LabelValueBean(year, year));
			}
			return rtnList;
		}

		/** 返回酒店等级列表 */
		public static List<LabelValueBean> getJddj() {

			List<LabelValueBean> djList = new ArrayList<LabelValueBean>();
			try {
				djList.add(new LabelValueBean("一星级", "一星级"));
				djList.add(new LabelValueBean("二星级", "二星级"));
				djList.add(new LabelValueBean("三星级", "三星级"));
				djList.add(new LabelValueBean("四星级", "四星级"));
				djList.add(new LabelValueBean("五星级", "五星级"));
				return djList;
			} catch (Exception e) {
				e.printStackTrace();
				return null;
			}

		}

		/** 返回景区等级列表 */
		public static List<LabelValueBean> getJqdj() {

			List<LabelValueBean> djList = new ArrayList<LabelValueBean>();
			try {
				djList.add(new LabelValueBean("1A", "1A"));
				djList.add(new LabelValueBean("2A", "2A"));
				djList.add(new LabelValueBean("3A", "3A"));
				djList.add(new LabelValueBean("4A", "4A"));
				return djList;
			} catch (Exception e) {
				e.printStackTrace();
				return null;
			}

		}

		/** 返回旅行社等级列表 */
		public static List<LabelValueBean> getLxsdj() {

			List<LabelValueBean> djList = new ArrayList<LabelValueBean>();
			try {
				djList.add(new LabelValueBean("一级社", "一级社"));
				djList.add(new LabelValueBean("二级社", "二级社"));
				djList.add(new LabelValueBean("三级社", "三级社"));
				return djList;
			} catch (Exception e) {
				e.printStackTrace();
				return null;
			}

		}

		/**
		 * 返回月份列表
		 * 
		 * @return
		 */
		public static List<LabelValueBean> getMonths() {
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			for (int i = 1; i < 13; i++) {
				String month = String.valueOf(i);
				if (month.length() == 1)
					month = "0" + month;
				rtnList.add(new LabelValueBean(month, month));
			}
			return rtnList;
		}

		/**
		 * 返回指定月份以前的月份列表。含当前月
		 * 
		 * @param curMonth
		 *            当前月份
		 * @return List<LabelValueBean>
		 */
		public static List<LabelValueBean> getMonths(int curMonth) {
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			for (int i = 1; i < 13; i++) {
				if (i <= curMonth) {
					String month = String.valueOf(i);
					if (month.length() == 1)
						month = "0" + month;
					rtnList.add(new LabelValueBean(month, month));
				}
			}
			return rtnList;
		}

		/**
		 * 返回日期列表
		 * 
		 * @return
		 */
		public static List<LabelValueBean> getDays() {
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			for (int i = 1; i < 31; i++) {
				String day = String.valueOf(i);
				if (day.length() == 1)
					day = "0" + day;
				rtnList.add(new LabelValueBean(day, day));
			}
			return rtnList;
		}

		/**
		 * 返回指定月日期列表
		 * 
		 * @return
		 */
		public static List<LabelValueBean> getDays(int year, int month) {
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			Calendar cal = Calendar.getInstance();
			cal.set(year, month, 1);
			int curr_day = cal.get(Calendar.DAY_OF_MONTH);
			for (int i = 1; i < curr_day; i++) {
				String day = String.valueOf(i);
				if (day.length() == 1)
					day = "0" + day;
				rtnList.add(new LabelValueBean(day, day));
			}
			return rtnList;
		}

		/**
		 * 返回季度列表
		 * 
		 * @return
		 */
		public static List<LabelValueBean> getQuarters() {
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			for (int i = 1; i < 5; i++) {
				String quarter = String.valueOf(i);
				rtnList.add(new LabelValueBean("第" + quarter + "季度", quarter));
			}
			return rtnList;
		}

		/**
		 * 返回半年列表
		 * 
		 * @return
		 */
		public static List<LabelValueBean> getHalfYear() {
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			rtnList.add(new LabelValueBean("上半年", "1"));
			rtnList.add(new LabelValueBean("下半年", "2"));
			return rtnList;
		}

		/**
		 * 返回学期列表
		 * 
		 * @return
		 */
		public static List<LabelValueBean> getHalfTerm() {
			Vector<LabelValueBean> rtnList = new Vector<LabelValueBean>();
			rtnList.add(new LabelValueBean("上学期", "1"));
			rtnList.add(new LabelValueBean("下学期", "2"));
			return rtnList;
		}

		/**
		 * 根据输入的年月返回这个月的第一天和最后一天
		 * 
		 * @param yearMonth
		 *            格式:2005-09
		 * @return String[0]:这个月的第一天(2005-09-01);String[1]:这个月的最后一天(2005-09-31)
		 */
		public static String[] getFirstAndLastDate(String yearMonth) {
			String[] date = new String[2];

			String[] d = yearMonth.split("-");
			if (d.length != 2 || d[0].length() != 4 || d[1].length() != 2) {
				date = null;
			} else {
				Calendar cal = Calendar.getInstance();
				cal.set(Integer.parseInt(d[0]), Integer.parseInt(d[1]) - 1, 1);
				int year = cal.get(Calendar.YEAR);
				int month = cal.get(Calendar.MONTH);
				int firstDay = cal.getActualMinimum(Calendar.DATE);
				int lastDay = cal.getActualMaximum(Calendar.DATE);

				cal.set(year, month, firstDay, 0, 0, 0);
				Date begin = cal.getTime();
				cal.set(year, month, lastDay, 23, 59, 59);
				Date end = cal.getTime();

				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
				String b_d = df.format(begin);
				String e_d = df.format(end);
				date[0] = b_d;
				date[1] = e_d;
			}

			return date;
		}

		/**
		 * 根据当前日期,返回一个循环年月,截止到当前年月的一年12个月份
		 * 
		 * @return String[2008-06,....,2009-05]
		 */
		public static String[] getCycleOneYearMonth() {
			String _todayDateTime = getTodayDateTime();
			String[] yearMonths = new String[12];
			int n = 0;
			for (int i = 12; i > 0; i--) {
				String temp = dateAdd(_todayDateTime, "m", -i);
				yearMonths[n] = temp.substring(0, 7);
				n++;
			}
			return yearMonths;
		}
		

		/**
		 * 格式化日期
		 * 
		 * @param date
		 * @param format
		 * @return
		 */
		public static String formatDate(Date date, String format) {
			String now = "";
			if (date != null) {
				// 格式化当前时间
				java.text.SimpleDateFormat isNow = new java.text.SimpleDateFormat(
						format);
				now = isNow.format(date);
			}
			return now;
		}
}

猜你喜欢

转载自blog.csdn.net/qq_38567039/article/details/80520841
今日推荐