- package com.util;
- import java.text.ParseException;
- import java.text.ParsePosition;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.GregorianCalendar;
- import org.apache.commons.lang.StringUtils;
- import org.apache.log4j.Logger;
- /**
- * 日期处理工具类
- * @author dylan_xu
- * @date Mar 11, 2012
- * @modified by
- * @modified date
- * @since JDK1.6
- * @see com.util.DateUtil
- */
- public class DateUtil {
- // ~ Static fields/initializers
- // =============================================
- private static Logger logger = Logger.getLogger(DateUtil.class);
- private static String defaultDatePattern = null;
- private static String timePattern = "HH:mm";
- private static Calendar cale = Calendar.getInstance();
- public static final String TS_FORMAT = DateUtil.getDatePattern() + " HH:mm:ss.S";
- /** 日期格式yyyy-MM字符串常量 */
- private static final String MONTH_FORMAT = "yyyy-MM";
- /** 日期格式yyyy-MM-dd字符串常量 */
- private static final String DATE_FORMAT = "yyyy-MM-dd";
- /** 日期格式HH:mm:ss字符串常量 */
- private static final String HOUR_FORMAT = "HH:mm:ss";
- /** 日期格式yyyy-MM-dd HH:mm:ss字符串常量 */
- private static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
- /** 某天开始时分秒字符串常量 00:00:00 */
- private static final String DAY_BEGIN_STRING_HHMMSS = " 00:00:00";
- /** 某天结束时分秒字符串常量 23:59:59 */
- public static final String DAY_END_STRING_HHMMSS = " 23:59:59";
- private static SimpleDateFormat sdf_date_format = new SimpleDateFormat(DATE_FORMAT);
- private static SimpleDateFormat sdf_hour_format = new SimpleDateFormat(HOUR_FORMAT);
- private static SimpleDateFormat sdf_datetime_format = new SimpleDateFormat(DATETIME_FORMAT);
- // ~ Methods
- // ================================================================
- public DateUtil() {
- }
- /**
- * 获得服务器当前日期及时间,以格式为:yyyy-MM-dd HH:mm:ss的日期字符串形式返回
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getDateTime() {
- try {
- return sdf_datetime_format.format(cale.getTime());
- } catch (Exception e) {
- logger.debug("DateUtil.getDateTime():" + e.getMessage());
- return "";
- }
- }
- /**
- * 获得服务器当前日期,以格式为:yyyy-MM-dd的日期字符串形式返回
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getDate() {
- try {
- return sdf_date_format.format(cale.getTime());
- } catch (Exception e) {
- logger.debug("DateUtil.getDate():" + e.getMessage());
- return "";
- }
- }
- /**
- * 获得服务器当前时间,以格式为:HH:mm:ss的日期字符串形式返回
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getTime() {
- String temp = " ";
- try {
- temp += sdf_hour_format.format(cale.getTime());
- return temp;
- } catch (Exception e) {
- logger.debug("DateUtil.getTime():" + e.getMessage());
- return "";
- }
- }
- /**
- * 统计时开始日期的默认值
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getStartDate() {
- try {
- return getYear() + "-01-01";
- } catch (Exception e) {
- logger.debug("DateUtil.getStartDate():" + e.getMessage());
- return "";
- }
- }
- /**
- * 统计时结束日期的默认值
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getEndDate() {
- try {
- return getDate();
- } catch (Exception e) {
- logger.debug("DateUtil.getEndDate():" + e.getMessage());
- return "";
- }
- }
- /**
- * 获得服务器当前日期的年份
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getYear() {
- try {
- return String.valueOf(cale.get(Calendar.YEAR));
- } catch (Exception e) {
- logger.debug("DateUtil.getYear():" + e.getMessage());
- return "";
- }
- }
- /**
- * 获得服务器当前日期的月份
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getMonth() {
- try {
- java.text.DecimalFormat df = new java.text.DecimalFormat();
- df.applyPattern("00;00");
- return df.format((cale.get(Calendar.MONTH) + 1));
- } catch (Exception e) {
- logger.debug("DateUtil.getMonth():" + e.getMessage());
- return "";
- }
- }
- /**
- * 获得服务器在当前月中天数
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getDay() {
- try {
- return String.valueOf(cale.get(Calendar.DAY_OF_MONTH));
- } catch (Exception e) {
- logger.debug("DateUtil.getDay():" + e.getMessage());
- return "";
- }
- }
- /**
- * 比较两个日期相差的天数
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param date1
- * @param date2
- * @return
- */
- public static int getMargin(String date1, String date2) {
- int margin;
- try {
- ParsePosition pos = new ParsePosition(0);
- ParsePosition pos1 = new ParsePosition(0);
- Date dt1 = sdf_date_format.parse(date1, pos);
- Date dt2 = sdf_date_format.parse(date2, pos1);
- long l = dt1.getTime() - dt2.getTime();
- margin = (int) (l / (24 * 60 * 60 * 1000));
- return margin;
- } catch (Exception e) {
- logger.debug("DateUtil.getMargin():" + e.toString());
- return 0;
- }
- }
- /**
- * 比较两个日期相差的天数
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param date1
- * @param date2
- * @return
- */
- public static double getDoubleMargin(String date1, String date2) {
- double margin;
- try {
- ParsePosition pos = new ParsePosition(0);
- ParsePosition pos1 = new ParsePosition(0);
- Date dt1 = sdf_datetime_format.parse(date1, pos);
- Date dt2 = sdf_datetime_format.parse(date2, pos1);
- long l = dt1.getTime() - dt2.getTime();
- margin = (l / (24 * 60 * 60 * 1000.00));
- return margin;
- } catch (Exception e) {
- logger.debug("DateUtil.getMargin():" + e.toString());
- return 0;
- }
- }
- /**
- * 比较两个日期相差的月数
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param date1
- * @param date2
- * @return
- */
- public static int getMonthMargin(String date1, String date2) {
- int margin;
- try {
- margin = (Integer.parseInt(date2.substring(0, 4)) - Integer.parseInt(date1.substring(0, 4))) * 12;
- margin += (Integer.parseInt(date2.substring(4, 7).replaceAll("-0",
- "-")) - Integer.parseInt(date1.substring(4, 7).replaceAll("-0", "-")));
- return margin;
- } catch (Exception e) {
- logger.debug("DateUtil.getMargin():" + e.toString());
- return 0;
- }
- }
- /**
- * 返回日期加X天后的日期
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param date
- * @param i
- * @return
- */
- public static String addDay(String date, int i) {
- try {
- GregorianCalendar gCal = new GregorianCalendar(
- Integer.parseInt(date.substring(0, 4)),
- Integer.parseInt(date.substring(5, 7)) - 1,
- Integer.parseInt(date.substring(8, 10)));
- gCal.add(GregorianCalendar.DATE, i);
- return sdf_date_format.format(gCal.getTime());
- } catch (Exception e) {
- logger.debug("DateUtil.addDay():" + e.toString());
- return getDate();
- }
- }
- /**
- * 返回日期加X月后的日期
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param date
- * @param i
- * @return
- */
- public static String addMonth(String date, int i) {
- try {
- GregorianCalendar gCal = new GregorianCalendar(
- Integer.parseInt(date.substring(0, 4)),
- Integer.parseInt(date.substring(5, 7)) - 1,
- Integer.parseInt(date.substring(8, 10)));
- gCal.add(GregorianCalendar.MONTH, i);
- return sdf_date_format.format(gCal.getTime());
- } catch (Exception e) {
- logger.debug("DateUtil.addMonth():" + e.toString());
- return getDate();
- }
- }
- /**
- * 返回日期加X年后的日期
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param date
- * @param i
- * @return
- */
- public static String addYear(String date, int i) {
- try {
- GregorianCalendar gCal = new GregorianCalendar(
- Integer.parseInt(date.substring(0, 4)),
- Integer.parseInt(date.substring(5, 7)) - 1,
- Integer.parseInt(date.substring(8, 10)));
- gCal.add(GregorianCalendar.YEAR, i);
- return sdf_date_format.format(gCal.getTime());
- } catch (Exception e) {
- logger.debug("DateUtil.addYear():" + e.toString());
- return "";
- }
- }
- /**
- * 返回某年某月中的最大天
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param year
- * @param month
- * @return
- */
- public static int getMaxDay(int iyear, int imonth) {
- int day = 0;
- try {
- if (imonth == 1 || imonth == 3 || imonth == 5 || imonth == 7
- || imonth == 8 || imonth == 10 || imonth == 12) {
- day = 31;
- } else if (imonth == 4 || imonth == 6 || imonth == 9 || imonth == 11) {
- day = 30;
- } else if ((0 == (iyear % 4)) && (0 != (iyear % 100)) || (0 == (iyear % 400))) {
- day = 29;
- } else {
- day = 28;
- }
- return day;
- } catch (Exception e) {
- logger.debug("DateUtil.getMonthDay():" + e.toString());
- return 1;
- }
- }
- /**
- * 格式化日期
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param orgDate
- * @param Type
- * @param Span
- * @return
- */
- @SuppressWarnings("static-access")
- public String rollDate(String orgDate, int Type, int Span) {
- try {
- String temp = "";
- int iyear, imonth, iday;
- int iPos = 0;
- char seperater = '-';
- if (orgDate == null || orgDate.length() < 6) {
- return "";
- }
- iPos = orgDate.indexOf(seperater);
- if (iPos > 0) {
- iyear = Integer.parseInt(orgDate.substring(0, iPos));
- temp = orgDate.substring(iPos + 1);
- } else {
- iyear = Integer.parseInt(orgDate.substring(0, 4));
- temp = orgDate.substring(4);
- }
- iPos = temp.indexOf(seperater);
- if (iPos > 0) {
- imonth = Integer.parseInt(temp.substring(0, iPos));
- temp = temp.substring(iPos + 1);
- } else {
- imonth = Integer.parseInt(temp.substring(0, 2));
- temp = temp.substring(2);
- }
- imonth--;
- if (imonth < 0 || imonth > 11) {
- imonth = 0;
- }
- iday = Integer.parseInt(temp);
- if (iday < 1 || iday > 31)
- iday = 1;
- Calendar orgcale = Calendar.getInstance();
- orgcale.set(iyear, imonth, iday);
- temp = this.rollDate(orgcale, Type, Span);
- return temp;
- } catch (Exception e) {
- return "";
- }
- }
- public static String rollDate(Calendar cal, int Type, int Span) {
- try {
- String temp = "";
- Calendar rolcale;
- rolcale = cal;
- rolcale.add(Type, Span);
- temp = sdf_date_format.format(rolcale.getTime());
- return temp;
- } catch (Exception e) {
- return "";
- }
- }
- /**
- * 返回默认的日期格式
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static synchronized String getDatePattern() {
- defaultDatePattern = "yyyy-MM-dd";
- return defaultDatePattern;
- }
- /**
- * 将指定日期按默认格式进行格式代化成字符串后输出如:yyyy-MM-dd
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param aDate
- * @return
- */
- public static final String getDate(Date aDate) {
- SimpleDateFormat df = null;
- String returnValue = "";
- if (aDate != null) {
- df = new SimpleDateFormat(getDatePattern());
- returnValue = df.format(aDate);
- }
- return (returnValue);
- }
- /**
- * 取得给定日期的时间字符串,格式为当前默认时间格式
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param theTime
- * @return
- */
- public static String getTimeNow(Date theTime) {
- return getDateTime(timePattern, theTime);
- }
- /**
- * 取得当前时间的Calendar日历对象
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- * @throws ParseException
- */
- public Calendar getToday() throws ParseException {
- Date today = new Date();
- SimpleDateFormat df = new SimpleDateFormat(getDatePattern());
- String todayAsString = df.format(today);
- Calendar cal = new GregorianCalendar();
- cal.setTime(convertStringToDate(todayAsString));
- return cal;
- }
- /**
- * 将日期类转换成指定格式的字符串形式
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param aMask
- * @param aDate
- * @return
- */
- public static final String getDateTime(String aMask, Date aDate) {
- SimpleDateFormat df = null;
- String returnValue = "";
- if (aDate == null) {
- logger.error("aDate is null!");
- } else {
- df = new SimpleDateFormat(aMask);
- returnValue = df.format(aDate);
- }
- return (returnValue);
- }
- /**
- * 将指定的日期转换成默认格式的字符串形式
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param aDate
- * @return
- */
- public static final String convertDateToString(Date aDate) {
- return getDateTime(getDatePattern(), aDate);
- }
- /**
- * 将日期字符串按指定格式转换成日期类型
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param aMask 指定的日期格式,如:yyyy-MM-dd
- * @param strDate 待转换的日期字符串
- * @return
- * @throws ParseException
- */
- public static final Date convertStringToDate(String aMask, String strDate)
- throws ParseException {
- SimpleDateFormat df = null;
- Date date = null;
- df = new SimpleDateFormat(aMask);
- if (logger.isDebugEnabled()) {
- logger.debug("converting '" + strDate + "' to date with mask '" + aMask + "'");
- }
- try {
- date = df.parse(strDate);
- } catch (ParseException pe) {
- logger.error("ParseException: " + pe);
- throw pe;
- }
- return (date);
- }
- /**
- * 将日期字符串按默认格式转换成日期类型
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param strDate
- * @return
- * @throws ParseException
- */
- public static Date convertStringToDate(String strDate)
- throws ParseException {
- Date aDate = null;
- try {
- if (logger.isDebugEnabled()) {
- logger.debug("converting date with pattern: " + getDatePattern());
- }
- aDate = convertStringToDate(getDatePattern(), strDate);
- } catch (ParseException pe) {
- logger.error("Could not convert '" + strDate + "' to a date, throwing exception");
- throw new ParseException(pe.getMessage(), pe.getErrorOffset());
- }
- return aDate;
- }
- /**
- * 返回一个JAVA简单类型的日期字符串
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- public static String getSimpleDateFormat() {
- SimpleDateFormat formatter = new SimpleDateFormat();
- String NDateTime = formatter.format(new Date());
- return NDateTime;
- }
- /**
- * 将指定字符串格式的日期与当前时间比较
- * @author DYLAN
- * @date Feb 17, 2012
- * @param strDate 需要比较时间
- * @return
- * <p>
- * int code
- * <ul>
- * <li>-1 当前时间 < 比较时间 </li>
- * <li> 0 当前时间 = 比较时间 </li>
- * <li>>=1当前时间 > 比较时间 </li>
- * </ul>
- * </p>
- */
- public static int compareToCurTime (String strDate) {
- if (StringUtils.isBlank(strDate)) {
- return -1;
- }
- Date curTime = cale.getTime();
- String strCurTime = null;
- try {
- strCurTime = sdf_datetime_format.format(curTime);
- } catch (Exception e) {
- if (logger.isDebugEnabled()) {
- logger.debug("[Could not format '" + strDate + "' to a date, throwing exception:" + e.getLocalizedMessage() + "]");
- }
- }
- if (StringUtils.isNotBlank(strCurTime)) {
- return strCurTime.compareTo(strDate);
- }
- return -1;
- }
- /**
- * 为查询日期添加最小时间
- *
- * @param 目标类型Date
- * @param 转换参数Date
- * @return
- */
- @SuppressWarnings("deprecation")
- public static Date addStartTime(Date param) {
- Date date = param;
- try {
- date.setHours(0);
- date.setMinutes(0);
- date.setSeconds(0);
- return date;
- } catch (Exception ex) {
- return date;
- }
- }
- /**
- * 为查询日期添加最大时间
- *
- * @param 目标类型Date
- * @param 转换参数Date
- * @return
- */
- @SuppressWarnings("deprecation")
- public static Date addEndTime(Date param) {
- Date date = param;
- try {
- date.setHours(23);
- date.setMinutes(59);
- date.setSeconds(0);
- return date;
- } catch (Exception ex) {
- return date;
- }
- }
- /**
- * 返回系统现在年份中指定月份的天数
- *
- * @param 月份month
- * @return 指定月的总天数
- */
- @SuppressWarnings("deprecation")
- public static String getMonthLastDay(int month) {
- Date date = new Date();
- int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
- { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };
- int year = date.getYear() + 1900;
- if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
- return day[1][month] + "";
- } else {
- return day[0][month] + "";
- }
- }
- /**
- * 返回指定年份中指定月份的天数
- *
- * @param 年份year
- * @param 月份month
- * @return 指定月的总天数
- */
- public static String getMonthLastDay(int year, int month) {
- int[][] day = { { 0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
- { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } };
- if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
- return day[1][month] + "";
- } else {
- return day[0][month] + "";
- }
- }
- /**
- * 判断是平年还是闰年
- * @author dylan_xu
- * @date Mar 11, 2012
- * @param year
- * @return
- */
- public static boolean isLeapyear(int year) {
- if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0) {
- return true;
- } else {
- return false;
- }
- }
- /**
- * 取得当前时间的日戳
- * @author dylan_xu
- * @date Mar 11, 2012
- * @return
- */
- @SuppressWarnings("deprecation")
- public static String getTimestamp() {
- Date date = cale.getTime();
- String timestamp = "" + (date.getYear() + 1900) + date.getMonth()
- + date.getDate() + date.getMinutes() + date.getSeconds()
- + date.getTime();
- return timestamp;
- }
- /**
- * 取得指定时间的日戳
- *
- * @return
- */
- @SuppressWarnings("deprecation")
- public static String getTimestamp(Date date) {
- String timestamp = "" + (date.getYear() + 1900) + date.getMonth()
- + date.getDate() + date.getMinutes() + date.getSeconds()
- + date.getTime();
- return timestamp;
- }
- public static void main(String[] args) {
- System.out.println(getYear() + "|" + getMonth() + "|" + getDate());
- }
- }
附上100%完整的系统项目源码:
JSP图书馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97e.html
JSP酒店宾馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97m.html
JSP学生信息管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97r.html
JSP房屋出售租赁管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a98c.html
J2EE酒店在线预订系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97v.html
SSH/J2EE人力资源管理系统:http://blog.sina.com.cn/s/blog_4b5bc01101019ztu.html
ssh2图书管理系统(图书馆管理系统): http://blog.sina.com.cn/s/blog_4b5bc0110101adf0.html
毕业设计-JSP图书馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a979.html
毕业设计-JSP酒店宾馆管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a97z.html
毕业设计-JSP学生信息管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a987.html
毕业设计-JSP房屋出售租赁管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101a98a.html
毕业设计-s2sh/j2ee图书管理系统 :http://blog.sina.com.cn/s/blog_4b5bc0110101ain5.html
ssh2图书管理系统(图书馆管理系统):http://blog.sina.com.cn/s/blog_4b5bc0110101adf0.html
毕业设计-jsp信息发布系统(信息供求网站系统):http://blog.sina.com.cn/s/blog_4b5bc0110101aiou.html
struts2+servlet+jsp信息发布系统:http://blog.sina.com.cn/s/blog_4b5bc0110101aiop.html
毕业设计-jsp电子商城 网上商城系统:http://blog.sina.com.cn/s/blog_4b5bc0110101aiof.html
jsp电子商城 网上商城系统(struts+servlet+jsp):http://blog.sina.com.cn/s/blog_4b5bc0110101aio9.html
毕业设计-图书管理系统 jsp图书馆系统Struts2+Spring+Ibatis+extjs(ssi):
http://blog.sina.com.cn/s/blog_4b5bc0110101ainu.html
Struts2+Spring+Ibatis+extjs(ssi)图书管理系统 jsp图书馆系统:
http://blog.sina.com.cn/s/blog_4b5bc0110101ainh.html
ssh2图书管理系统(图书馆管理系统):http://blog.sina.com.cn/s/blog_4b5bc0110101adf0.html
毕业设计-s2sh/j2ee图书管理系统 struts2+spring+hibernate:
http://blog.sina.com.cn/s/blog_4b5bc0110101ain5.html
jsp酒店在线预订系统 酒店客房预定系统:http://blog.sina.com.cn/s/blog_4b5bc0110101atb8.html
毕业设计 jsp酒店在线预订系统 酒店客房预定系统:http://blog.sina.com.cn/s/blog_4b5bc0110101atbb.html
人力资源管理系统 S2SH/J2EE/JAVA:http://blog.sina.com.cn/s/blog_4b5bc0110101azoz.html
毕业设计-人力资源管理系统 S2SH/J2EE/JSP:http://blog.sina.com.cn/s/blog_4b5bc0110101azp0.html
ssh网上商城 电子商城struts hibernate :http://blog.sina.com.cn/s/blog_4b5bc0110101b5gr.html
毕业设计 ssh网上商城 电子商城struts hibernate:http://blog.sina.com.cn/s/blog_4b5bc0110101b5h2.html
毕业设计 ssh电子相册管理系统:http://blog.sina.com.cn/s/blog_4b5bc0110101bkbl.html
实用技术:
J2EE/JSP应用技术70实例(源码)(实用): http://blog.sina.com.cn/s/blog_4b5bc0110101acms.html