/*** 返回当前时间
*
*@return返回当前时间*/
public staticDate getCurrentDateTime() {
java.util.Calendar calNow=java.util.Calendar.getInstance();
java.util.Date dtNow=calNow.getTime();returndtNow;
}/*** 返回当前时间的数字
*
*@return返回当前时间的数字*/
public staticString getCurrentTimeNumber() {return new SimpleDateFormat("yyyyMMddHHmmss")
.format(newjava.util.Date());
}public staticString getCurrentTime() {return new SimpleDateFormat("yyyy-MM-dd").format(newjava.util.Date());
}public static int getCurrentUnixTime() throwsException {long epoch = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss")
.parse("01/01/1970 00:00:00").getTime() / 1000;return Integer.parseInt(Long.toString(System.currentTimeMillis() / 1000
-epoch));
}public static longgetSubDay(Date date2) {
Date d2= convertToDate(dateParseShortString(newDate()));
Date d1=convertToDate(dateParseShortString(date2));long day = (d1.getTime() - d2.getTime()) / (24 * 60 * 60 * 1000);returnday;
}public static longgetSubDays(Date date2) {
Date d2= convertToDateTime(dateParseString(newDate()));
Date d1=convertToDateTime(dateParseString(date2));long day = (d1.getTime() - d2.getTime()) / (24 * 60 * 60 * 1000);returnday;
}/***@return返回今天日期,时间部分为0。例如:2006-4-8 00:00:00*/
public staticDate getToday() {return truncate(newDate(), Calendar.DATE);
}/***@return返回今天日期,秒部分为0。例如:2006-4-8 23:59:00*/
public staticDate getTodayM() {
SimpleDateFormat s= new SimpleDateFormat("yyyy-MM-dd HH:mm:00");return stringToDate(s.format(newDate()));
}/***@return返回今天日期,时间部分为23:59:59.999。例如:2006-4-19 23:59:59.999*/
public staticDate getTodayEnd() {return getDayEnd(newDate());
}/*** 将字符串转换为日期(不包括时间)
*
*@paramdateString
* "yyyy-MM-dd"格式的日期字符串
*@return日期*/
public staticDate convertToDate(String dateString) {try{
DateFormat DATE_FORMAT= new SimpleDateFormat("yyyy-MM-dd",
java.util.Locale.CHINA);returnDATE_FORMAT.parse(dateString);
}catch(ParseException e) {return null;
}
}/*** 检查字符串是否为日期格式yyyy-MM-dd
*
*@paramdateString
*@returntrue=是;false=否*/
public static booleancheckDateString(String dateString) {return (convertToDate(dateString) != null);
}/*** 将字符串转换为日期(包括时间)
*
*@paramdateString
* "yyyy-MM-dd HH:mm:ss"格式的日期字符串
*@return日期时间*/
public staticDate convertToDateTime(String dateTimeString) {try{
DateFormat DATE_TIME_FORMAT= newSimpleDateFormat("yyyy-MM-dd HH:mm:ss", java.util.Locale.CHINA);returnDATE_TIME_FORMAT.parse(dateTimeString);
}catch(ParseException e) {return null;
}
}public staticDate convertToTime(String dateTimeString) {try{
DateFormat TIME_FORMAT= new SimpleDateFormat("HH:mm:ss",
java.util.Locale.CHINA);returnTIME_FORMAT.parse(dateTimeString);
}catch(ParseException e) {return null;
}
}/*** 将字符串转换为日期(包括时间)
*
*@paramdateString
* "dd/MM/yyyy HH:mm"格式的日期字符串
*@return日期*/
public staticDate convertSimpleToDateTime(String dateString) {try{return new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm")
.parse(dateString);
}catch(ParseException e) {return null;
}
}/*** 检查字符串是否为日期时间格式yyyy-MM-dd HH:mm:ss
*
*@paramdateString
*@returntrue=是;false=否*/
public static booleancheckDateTimeString(String dateTimeString) {return (convertToDateTime(dateTimeString) != null);
}/*** 获取月底
*
*@paramyear
* 年 4位年度
*@parammonth
* 月 1~12
*@return月底的Date对象。例如:2006-3-31 23:59:59.999*/
public static Date getMonthEnd(int year, intmonth) {
StringBuffer sb= new StringBuffer(10);
Date date;if (month < 12) {
sb.append(Integer.toString(year));
sb.append("-");
sb.append(month+ 1);
sb.append("-1");
date=convertToDate(sb.toString());
}else{
sb.append(Integer.toString(year+ 1));
sb.append("-1-1");
date=convertToDate(sb.toString());
}
date.setTime(date.getTime()- 1);returndate;
}/*** 获取月底
*
*@paramwhen
* 要计算月底的日期
*@return月底的Date对象。例如:2006-3-31 23:59:59.999*/
public staticDate getMonthEnd(Date when) {
Assert.notNull(when,"date must not be null !");
Calendar calendar=Calendar.getInstance();
calendar.setTime(when);int year =calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH) + 1;returngetMonthEnd(year, month);
}/*** 日期格式转换为字符串
*
*@paramdate
*@return
*/
public staticString dateParseString(Date date) {
java.text.DateFormat df= newjava.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");returndf.format(date);
}/*** 日期格式转换为字符串
*
*@paramdate
*@return
*/
public staticString dateParseString(Date date, String format) {if(StringUtils.isEmpty(format)) {
format= "yyyy-MM-dd HH:mm:ss";
}
java.text.DateFormat df= newjava.text.SimpleDateFormat(format);returndf.format(date);
}/*** 日期格式转换为字符串
*
*@paramdate
*@return
*/
public staticString dateParseShortString(Date date) {
java.text.DateFormat df= new java.text.SimpleDateFormat("yyyy-MM-dd");returndf.format(date);
}/*** 活动专用
*@paramper 期次
*@return
*/
public static String getFormatDateString(intper){
java.text.DateFormat df= new java.text.SimpleDateFormat("yyyy年MM月dd日");return df.format(DateUtils.addMonths(newDate(), per));
}public staticString dateParseShortStringSecend(Date date) {
java.text.DateFormat df= new java.text.SimpleDateFormat("HH:mm:ss");returndf.format(date);
}public staticString dateParseShortStringHour(Date date) {
java.text.DateFormat df= new java.text.SimpleDateFormat("HH:mm");returndf.format(date);
}/*** 老带新用了下这个
*@return
*/
public staticString getThisTimeStr(){
java.text.DateFormat df= new java.text.SimpleDateFormat("MM-dd HH:mm");return df.format(newDate());
}/*** 获取给定日的最后一刻。
*
*@paramwhen
* 给定日
*@return最后一刻。例如:2006-4-19 23:59:59.999*/
public staticDate getDayEnd(Date when) {
Date date=truncate(when, Calendar.DATE);
date= addDays(date, 1);
date.setTime(date.getTime()- 1);returndate;
}/*** 获取给定日的第一刻。
*
*@paramwhen
* 给定日
*@return最后一刻。例如:2006-4-19 23:59:59.999*/
public staticDate getDay(Date when) {
Date date=truncate(when, Calendar.DATE);
date= addDays(date, -1);
date.setTime(date.getTime()+ 1);returndate;
}/*** 日期加法
*
*@paramwhen
* 被计算的日期
*@paramfield
* the time field. 在Calendar中定义的常数,例如Calendar.DATE
*@paramamount
* 加数
*@return计算后的日期*/
public static Date add(Date when, int field, intamount) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(when);
calendar.add(field, amount);returncalendar.getTime();
}/*** 计算给定的日期加上给定的天数。
*
*@paramwhen
* 给定的日期
*@paramamount
* 给定的天数
*@return计算后的日期*/
public static Date addDays(Date when, intamount) {returnadd(when, Calendar.DAY_OF_YEAR, amount);
}/*** 计算给定的日期加上给定的分钟数。
*
*@paramwhen
* 给定的日期
*@paramamount
* 给定的分钟数
*@return计算后的日期*/
public static Date addMinutes(Date when, intamount) {returnadd(when, Calendar.MINUTE, amount);
}/*** 计算给定的日期加上给定的秒数。
*
*@paramwhen
* 给定的日期
*@paramamount
* 给定的秒数
*@return计算后的日期*/
public static Date addSeconds(Date when, intamount) {returnadd(when, Calendar.SECOND, amount);
}/*** 计算给定的日期加上给定的月数。
*
*@paramwhen
* 给定的日期
*@paramamount
* 给定的月数
*@return计算后的日期*/
public static Date addMonths(Date when, intamount) {returnadd(when, Calendar.MONTH, amount);
}/*** 获取当前时段:早上、上午、下午、晚上、凌晨
*
*@return当前时段*/@SuppressWarnings("deprecation")public staticString getTimePeriod() {
String period= "";
Date now=getCurrentDateTime();int hour =now.getHours();if (hour >= 0 && hour < 6) {
period= "凌晨";
}else if (hour >= 6 && hour < 8) {
period= "早上";
}else if (hour >= 8 && hour < 12) {
period= "上午";
}else if (hour >= 12 && hour < 18) {
period= "下午";
}else if (hour >= 18) {
period= "晚上";
}returnperiod;
}/***
*@paramdate
*@paramn
*@return
*/
public static Date getTimePriTenDay(Date date, intn) {
SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd");return convertToDateTime(df.format(new Date(date.getTime() + n * 24
* 60 * 60 * 1000)));
}/*** 将Date对象类型转化为日期(2006-09-17 5:20:5)的字符串
*
*@paramDate
*@returnString*/
public staticString dateToString(Date date) {try{if (date != null)return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
}catch(Exception e) {
e.printStackTrace();
}return null;
}/*** 判断当前日期是否在两个日期之间
*
*@paramstartDate
*@paramendDate
*@return
*/
public static booleanisTodayIn(String startDate, String endDate) {
Date today=DateUtils.parseDate(DateUtils
.dateParseShortString(newDate()));
Date sDate=DateUtils.parseDate(startDate);
Date eDate=DateUtils.parseDate(endDate);if (today.getTime() >=sDate.getTime()&& today.getTime() <=eDate.getTime())return true;return false;
}/*** 日期比较
*@paramdate1 date1>date2 true
*@paramdate2
*@return
*/
public static booleandateCompare(Date date1, String date2) {
Date date1_s=DateUtils.parseDate(DateUtils
.dateParseShortString(date1));
Date date2_s=DateUtils.parseDate(date2);if (date1_s.getTime() >=date2_s.getTime())return true;return false;
}public static booleandateCompare2(Date date1, String date2) {
Date date1_s=DateUtils.parseDate(DateUtils
.dateParseShortString(date1));
Date date2_s=DateUtils.parseDate(date2);if (date1_s.getTime() >date2_s.getTime())return true;return false;
}/*** 将String 类型的转化为日期格式(2006-09-17 5:20:5)
*
*@paramString
*@returnDate*/
public staticDate stringToDate(String dateStr) {try{if (dateStr != null)return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse(dateStr);
}catch(Exception e) {
e.printStackTrace();
}return null;
}/*** 字符串转为时间类型
*
*@paramdateStr
*
*@returnDate*/
public static finalDate parseDate(String dateStr) {
SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd");try{returndf.parse(dateStr);
}catch(ParseException e) {
e.printStackTrace();
}return null;
}public static finalDate parseDateByFormat(String dateStr, String format) {
SimpleDateFormat df= newSimpleDateFormat(format);try{returndf.parse(dateStr);
}catch(ParseException e) {
e.printStackTrace();
}return null;
}/*** 得到具体时间如:几天前;几小时前;几分钟前;几秒钟前
*
*@paramtime
* 传入一个Date类型的日期
*@return根据当天当时当秒解析出距离当天当时当秒的字符串 String*/
public staticString getTimeInterval(Date time) {
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try{
Long dateDiff= sdf.parse(sdf.format(newDate())).getTime()-sdf.parse(sdf.format(time)).getTime();
Long day= dateDiff / (24 * 60 * 60 * 1000);if (day > 0) {return day + "天前";
}
Long hour= dateDiff / (60 * 60 * 1000);if (hour > 0) {return hour + "小时前";
}
Long minute= dateDiff / (60 * 1000);if (minute > 0) {return minute + "分钟前";
}
Long second= dateDiff / 1000;return second + "秒前";
}catch(Exception e) {
e.printStackTrace();return "未知";
}
}/*** 由当前时间返回yyyy-mm-dd格式的日期字符串
*
*@returnString*/
public staticString getStringOfTodayDate() {
Date d= newDate();
SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd");returndf.format(d);
}/***
*
*@returnString*/
public staticString getPzStartDate() {
Date d= DateUtils.addDays(new Date(), 1);
SimpleDateFormat df= new SimpleDateFormat("yyyy年MM月dd日");returndf.format(d);
}/***
*
*@returnString*/
public static String getPzEndDate(intper) {
Date d= DateUtils.add(DateUtils.addDays(new Date(), 1), Calendar.MONTH, per);
SimpleDateFormat df= new SimpleDateFormat("yyyy年MM月dd日");returndf.format(d);
}/***
*
*@returnString*/
public staticString getPzDate() {
Date d= newDate();
SimpleDateFormat df= new SimpleDateFormat("yyyy年MM月dd日");returndf.format(d);
}/*** 比较两日期(字符)的大小,日期格式为yyMMdd.
*
*@parambeginDate
*@paramendDate
*@returnboolean*/
public static final booleancompareDate(String beginDate, String endDate) {long begin = Integer.parseInt(beginDate.substring(0, 4)+ beginDate.substring(5, 7) + beginDate.substring(8, 10));long end = Integer.parseInt(endDate.substring(0, 4)+ endDate.substring(5, 7) + endDate.substring(8, 10));if (begin >end) {return false;
}else{return true;
}
}/*** 将Date对象类型转化为指定的格式字符串
*
*@paramdate
* 日期
*@paramformat
* 格式
*@returnString*/
public staticString dateToString(Date date, String format) {try{if (date != null)return newSimpleDateFormat(format).format(date);
}catch(Exception e) {
e.printStackTrace();
}return null;
}/*** 系统日期减去传入日期得到天数
*
*@paramdate1
* 传入日期
*@return天数 long*/
public static longsub(Date date1) {
Date d2= convertToDate(dateParseShortString(newDate()));
Date d1=convertToDate(dateParseShortString(date1));long day = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);returnday;
}/*** 系统日期减去传入日期得到秒数
*
*@paramdate1
* 传入日期
*@return天数 long*/
public static longsubSeconds(Date date1) {return Math.abs((date1.getTime() - new Date().getTime()) / 1000);
}/*** 两个日期相减得到天数
*
*@paramdate1
* 传入日期
*@paramdate2
* 传入日期
*@return天数 long*/
public static longsub(Date date1, Date date2) {
Date d1=convertToDate(dateParseShortString(date1));
Date d2=convertToDate(dateParseShortString(date2));long day = (d2.getTime() - d1.getTime()) / (24 * 60 * 60 * 1000);returnday;
}/*** 日期相减得到年数
*
*@paramdate1
* 相减的日期
*@return
*/
public static longsubDateGetYear(Date date1) {
Date d2= convertToDate(dateParseShortString(newDate()));
Date d1=convertToDate(dateParseShortString(date1));long day = (d2.getYear() -d1.getYear());return day + 1;
}/*** 计算两个日期间的月份
*
*@paramdate1
* 起始日期
*@paramdate2结束日期
*@return
*/
public static longsubDateGetMonth(Date date1, Date date2) {
DateCalculate culate=DateCalculate.calculate(date1, date2);returnculate.getDifferenceOfMonths();
}/*** 计算两个日期间的月份,不满一个月按一个月计算
*
*@paramdate1
* 起始日期
*@paramdate2结束日期
*@return
*/
public static longsubDateGetFullMonth(Date date1, Date date2) {
DateCalculate culate=DateCalculate.calculate(date1, date2);long month =culate.getDifferenceOfMonths();if (culate.getDifferenceOfDays() > 0)
month++;returnmonth;
}/*** 返回当前时间("yyyy-MM-dd HH:mm:ss")
*
*@return返回当前时间*/
public staticString getCurrentDateTimeStr() {//设置日期格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return df.format(newDate());
}