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; } }
java时间操作
猜你喜欢
转载自blog.csdn.net/qq_38567039/article/details/80520841
今日推荐
周排行