importjava.sql.Timestamp;importjava.text.DateFormat;importjava.text.ParseException;importjava.text.ParsePosition;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;importjava.util.Locale;importorg.apache.commons.lang.StringUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;
public classDateUtil {public static voidmain(String[] args) {//System.out.println(getStartTime(new Date()));//System.out.println(getEndTime(new Date()));//
//
//System.out.println("获取本月第一天日期:" + getFirstDayTimeOfMonth());//System.out.println("获取本月最后一天日期:" + getLastDayTimeOfMonth());//System.out.println("一周前日期:" + date2String(addDays(-7)));//System.out.println("两天前日期:" + date2String(addDays(-2)));//System.out.println("昨天日期:" + date2String(addDays(-1)));//System.out.println("今天日期:" + date2String(addDays(0)));//System.out.println("明天日期:" + date2String(addDays(1)));//System.out.println("两天后日期:" + date2String(addDays(2)));//System.out.println("一周后日期:" + date2String(addDays(7)));//
//System.out.println("获取当天日期:" + getNowTime("yyyy-MM-dd"));//System.out.println("获取本周一日期:" + getMondayOFWeek());//System.out.println("获取本周日的日期~:" + getCurrentWeekday());//System.out.println("获取上周一日期:" + getPreviousWeekday());//System.out.println("获取上周日日期:" + getPreviousWeekSunday());//System.out.println("获取下周一日期:" + getNextMonday());//System.out.println("获取下周日日期:" + getNextSunday());//System.out.println("获取本月第一天日期:" + getFirstDayOfMonth());//System.out.println("获取本月最后一天日期:" + getDefaultDay());//System.out.println("获取上月第一天日期:" + getPreviousMonthFirst());//System.out.println("获取上月最后一天的日期:" + getPreviousMonthEnd());//System.out.println("获取下月第一天日期:" + getNextMonthFirst());//System.out.println("获取下月最后一天日期:" + getNextMonthEnd());//System.out.println("获取本年的第一天日期:" + getCurrentYearFirst());//System.out.println("获取本年最后一天日期:" + getCurrentYearEnd());//System.out.println("获取去年的第一天日期:" + getPreviousYearFirst());//System.out.println("获取去年的最后一天日期:" + getPreviousYearEnd());//System.out.println("获取明年第一天日期:" + getNextYearFirst());//System.out.println("获取明年最后一天日期:" + getNextYearEnd());//System.out.println("获取本季度第一天到最后一天:" + getThisSeasonTime(11));//System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:" +//getTwoDay("2008-12-1", "2008-9-29"));//System.out.println(getNowTimeStampTime().getTime());
System.out.println(getLongAgoYear());
}private static final Logger logger = LoggerFactory.getLogger(DateUtil.class);//用来全局控制 上一周,本周,下一周的周数变化
private static int weeks = 0;private static int MaxDate;//一月最大天数
private static int MaxYear;//一年最大天数
private static String defaultDatePattern = null;private static String timePattern = "HH:mm";public static final String TS_FORMAT = DateUtil.getDatePattern() + " HH:mm:ss.S";/**日期格式yyyy-MM字符串常量*/
public static final String MONTH_FORMAT = "yyyy-MM";/**日期格式yyyyMM字符串常量*/
public static final String MONTH_FORMAT_SHORT = "yyyyMM";/**日期格式yyyy-MM-dd字符串常量*/
public static final String DATE_FORMAT = "yyyy-MM-dd";public static final String DATE_FORMAT_DIT = "yyyy.MM.dd";/**日期格式yyyyMMdd字符串常量*/
public static final String DATE_FORMAT_SHORT = "yyyyMMdd";/**日期格式yyyyMMddHHmm字符串常量*/
public static final String DATE_FORMAT_LONG = "yyyyMMddHHmm";public static final String DATE_FORMAT_MD = "MMdd";public static final String DATE_FORMAT_CHN_MD = "M月dd日";/**日期格式yyyy MM dd字符串常量*/
public static final String DATE_FORMAT_BANK = "yyyy MM dd";/**日期格式HH:mm:ss字符串常量*/
public static final String HOUR_FORMAT = "HH:mm:ss";/**日期格式yyyy-MM-dd HH:mm:ss字符串常量*/
public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";/**日期格式yyyy-MM-dd HH:mm:ss字符串常量*/
public static final String DATETIME_FORMAT1 = "yyyy-MM-dd 00:00:00";/**日期格式yyyy-MM-dd HH:mm:ss字符串常量*/
public static final String DATETIME_FORMAT0 = "yyyy-MM-dd 01:00:00";/**日期格式yyyy-MM-dd HH:mm:ss字符串常量*/
public static final String DATETIME_FORMAT2 = "yyyy-MM-dd 23:59:59";/**格式化到小时*/
public static final String HOUR_DATETIME_FORMAT = "yyyy-MM-dd HH";/**日期格式yyyy-MM-dd HH:mm:ss字符串常量*/
public static final String MILLISECOND_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss.S";/**日期格式yyyy-MM-dd HH:mm:ss字符串常量*/
public static final String MILLI3SECOND_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";/**日期格式yyyy-MM-dd HH:mm:ss字符串常量*/
public static final String yyyyMMddHHmmss_FORMAT = "yyyyMMddHHmmss";public static final String yyyyMMddHHmmssSSS_FORMAT = "yyyyMMddHHmmssSSS";/**某天开始时分秒字符串常量 00:00:00*/
public 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 = newSimpleDateFormat(DATE_FORMAT);private static SimpleDateFormat sdf_date_format_bank = newSimpleDateFormat(DATE_FORMAT_BANK);private static SimpleDateFormat sdf_hour_format = newSimpleDateFormat(HOUR_FORMAT);private static SimpleDateFormat sdf_datetime_format = newSimpleDateFormat(DATETIME_FORMAT);private static SimpleDateFormat sdf_datetime_format2 = newSimpleDateFormat(yyyyMMddHHmmss_FORMAT);public static longcalTowDateOfDay(Date endDate,Date nowDate){long nd = 1000 * 24 * 60 * 60;long diff = endDate.getTime() -nowDate.getTime();//计算差多少天
long day = diff /nd;returnday;
}public static longcalTowDateOfHour(Date endDate,Date nowDate){long nd = 1000 * 24 * 60 * 60;long nh = 1000 * 60 * 60;long diff = endDate.getTime() -nowDate.getTime();//计算差多少小时
long hour = diff % nd /nh;returnhour;
}public static longcalTowDateOfMin(Date endDate,Date nowDate){long nd = 1000 * 24 * 60 * 60;long nh = 1000 * 60 * 60;long nm = 1000 * 60;long diff = endDate.getTime() -nowDate.getTime();//计算差多少分钟
long min = diff % nd % nh /nm;returnmin;
}public static longcalTowDateOfSecond(Date endDate,Date nowDate){long nd = 1000 * 24 * 60 * 60;long nh = 1000 * 60 * 60;long nm = 1000 * 60;long ns = 1000;long diff = endDate.getTime() -nowDate.getTime();//计算差多少分钟
long second = diff % nd % nh % nm /ns;returnsecond;
}public staticString calTime(Date nowDate,Date create_time){
String subTime="";long min = 0;longday;long hour = 0;long second =DateUtil.calTowDateOfSecond(nowDate, create_time);
min=DateUtil.calTowDateOfMin(nowDate, create_time);
hour=DateUtil.calTowDateOfHour(nowDate, create_time);
day=DateUtil.calTowDateOfDay(nowDate, create_time);if (day > 0) {
subTime= day + "天前";
}else if (hour > 0) {
subTime= hour + "小时前";
}else if (min > 0) {
subTime= min + "分钟前";
}else if(second > 0) {
subTime= second + "秒前";
}returnsubTime;
}publicDateUtil() {
}/*** 自定义格式化日期,
*@paramformat
*@paramdate
*@return
*/
public staticString formatDateTime(String format,Date date) {
SimpleDateFormat simpleDateFormat= newSimpleDateFormat(format);try{returnsimpleDateFormat.format(date.getTime());
}catch(Exception e) {
logger.debug("DateUtil.getDateTime():" +e.getMessage());return "";
}
}/*** 获得服务器当前日期及时间,以格式为:yyyy-MM-dd HH:mm:ss的日期字符串形式返回
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getDateTime() {try{returnsdf_datetime_format.format(Calendar.getInstance().getTime());
}catch(Exception e) {
logger.debug("DateUtil.getDateTime():" +e.getMessage());return "";
}
}/*** 获得服务器当前日期,以格式为:yyyy-MM-dd的日期字符串形式返回
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getDate() {try{returnsdf_date_format.format(Calendar.getInstance().getTime());
}catch(Exception e) {
logger.debug("DateUtil.getDate():" +e.getMessage());return "";
}
}/*** 获得服务器当前日期,以格式为:yyyy MM dd的日期字符串形式返回
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getDateWithBank() {try{returnsdf_date_format_bank.format(Calendar.getInstance().getTime());
}catch(Exception e) {
logger.debug("DateUtil.getDateWithBank():" +e.getMessage());return "";
}
}/*** 获得服务器当前时间,以格式为:HH:mm:ss的日期字符串形式返回
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getTime() {
String temp= " ";try{
temp+=sdf_hour_format.format(Calendar.getInstance().getTime());returntemp;
}catch(Exception e) {
logger.debug("DateUtil.getTime():" +e.getMessage());return "";
}
}/*** 统计时开始日期的默认值
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getStartDate() {try{return getYear() + "-01-01";
}catch(Exception e) {
logger.debug("DateUtil.getStartDate():" +e.getMessage());return "";
}
}/*** 统计时结束日期的默认值
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getEndDate() {try{returngetDate();
}catch(Exception e) {
logger.debug("DateUtil.getEndDate():" +e.getMessage());return "";
}
}/*** 获得服务器当前日期的年份
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getYear() {try{returnString.valueOf(Calendar.getInstance().get(Calendar.YEAR));
}catch(Exception e) {
logger.debug("DateUtil.getYear():" +e.getMessage());return "";
}
}/*** 获得服务器当前日期的年份
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticDate getLongAgoYear() {
Date date= null;try{
Calendar calendar=Calendar.getInstance();
calendar.set(1900, 0, 0, 00, 00, 00);
date=calendar.getTime();returndate;
}catch(Exception e) {
logger.debug("DateUtil.getYear():" +e.getMessage());return null;
}
}/*** 获得服务器当前日期的月份
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getMonth() {try{
java.text.DecimalFormat df= newjava.text.DecimalFormat();
df.applyPattern("00;00");return df.format((Calendar.getInstance().get(Calendar.MONTH) + 1));
}catch(Exception e) {
logger.debug("DateUtil.getMonth():" +e.getMessage());return "";
}
}/*** 获得服务器在当前月中天数
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getDay() {try{returnString.valueOf(Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
}catch(Exception e) {
logger.debug("DateUtil.getDay():" +e.getMessage());return "";
}
}/*** 比较两个日期相差的天数
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramdate1
*@paramdate2
*@return
*/
public static intgetMargin(String date1, String date2) {intmargin;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));returnmargin;
}catch(Exception e) {
logger.debug("DateUtil.getMargin():" +e.toString());return 0;
}
}/*** 比较两个日期相差的天数
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramdate1
*@paramdate2
*@return
*/
public static doublegetDoubleMargin(String date1, String date2) {doublemargin;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));returnmargin;
}catch(Exception e) {
logger.debug("DateUtil.getMargin():" +e.toString());return 0;
}
}/*** 比较两个日期相差的月数
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramdate1
*@paramdate2
*@return
*/
public static intgetMonthMargin(String date1, String date2) {intmargin;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", "-")));returnmargin;
}catch(Exception e) {
logger.debug("DateUtil.getMargin():" +e.toString());return 0;
}
}/*** 返回日期加X天后的日期
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramdate
*@parami
*@return
*/
public static String addDay(String date, inti) {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);returnsdf_date_format.format(gCal.getTime());
}catch(Exception e) {
logger.debug("DateUtil.addDay():" +e.toString());returngetDate();
}
}/*** 返回日期加X月后的日期
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramdate
*@parami
*@return
*/
public static String addMonth(String date, inti) {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);returnsdf_date_format.format(gCal.getTime());
}catch(Exception e) {
logger.debug("DateUtil.addMonth():" +e.toString());returngetDate();
}
}/*** 返回日期加X年后的日期
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramdate
*@parami
*@return
*/
public static String addYear(String date, inti) {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);returnsdf_date_format.format(gCal.getTime());
}catch(Exception e) {
logger.debug("DateUtil.addYear():" +e.toString());return "";
}
}/*** 返回某年某月中的最大天
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramyear
*@parammonth
*@return
*/
public static int getMaxDay(int iyear, intimonth) {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;
}returnday;
}catch(Exception e) {
logger.debug("DateUtil.getMonthDay():" +e.toString());return 1;
}
}/*** 格式化日期
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramorgDate
*@paramType
*@paramSpan
*@return
*/@SuppressWarnings("static-access")public String rollDate(String orgDate, int Type, intSpan) {try{
String temp= "";intiyear, 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);returntemp;
}catch(Exception e) {return "";
}
}public static String rollDate(Calendar cal, int Type, intSpan) {try{
String temp= "";
Calendar rolcale;
rolcale=cal;
rolcale.add(Type, Span);
temp=sdf_date_format.format(rolcale.getTime());returntemp;
}catch(Exception e) {return "";
}
}/*** 返回默认的日期格式
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public static synchronizedString getDatePattern() {
defaultDatePattern=DATETIME_FORMAT;returndefaultDatePattern;
}/*** 将指定日期按默认格式进行格式代化成字符串后输出如:yyyy-MM-dd
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramaDate
*@return
*/
public static finalString getDate(Date aDate) {
SimpleDateFormat df= null;
String returnValue= "";if (aDate != null) {
df= newSimpleDateFormat(getDatePattern());
returnValue=df.format(aDate);
}return(returnValue);
}/*** 取得给定日期的时间字符串,格式为当前默认时间格式
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramtheTime
*@return
*/
public staticString getTimeNow(Date theTime) {returngetDateTime(timePattern, theTime);
}/*** 取得当前时间的Calendar日历对象
*
*@authordylan_xu
* @date Mar 11, 2012
*@return*@throwsParseException*/
public Calendar getToday() throwsParseException {
Date today= newDate();
SimpleDateFormat df= newSimpleDateFormat(getDatePattern());
String todayAsString=df.format(today);
Calendar cal= newGregorianCalendar();
cal.setTime(convertStringToDate(todayAsString));returncal;
}/*** 将日期类转换成指定格式的字符串形式
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramaMask
*@paramaDate
*@return
*/
public static finalString getDateTime(String aMask, Date aDate) {
SimpleDateFormat df= null;
String returnValue= "";if (aDate == null) {
logger.error("aDate is null!");
}else{
df= newSimpleDateFormat(aMask);
returnValue=df.format(aDate);
}return(returnValue);
}/*** 将指定的日期转换成默认格式的字符串形式
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramaDate
*@return
*/
public static finalString convertDateToString(Date aDate) {returngetDateTime(getDatePattern(), aDate);
}/*** 将日期字符串按指定格式转换成日期类型
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramaMask
* 指定的日期格式,如:yyyy-MM-dd
*@paramstrDate
* 待转换的日期字符串
*@return*@throwsParseException*/
public static final Date convertStringToDate(String aMask, String strDate) throwsParseException {
SimpleDateFormat df= null;
Date date= null;
df= newSimpleDateFormat(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);throwpe;
}return(date);
}public static finalString formatDate(String format, String strDate) {
SimpleDateFormat df= null;
Date date= null;
df= newSimpleDateFormat(format);if(logger.isDebugEnabled()) {
logger.debug("converting ".concat(strDate).concat(" to date with mask ").concat(format));
}try{
date=df.parse(strDate);
}catch(Exception e) {
logger.error(e.getMessage(), e);
}returngetDateTime(format,date);
}/*** 将日期字符串按默认格式转换成日期类型
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramstrDate
*@return*@throwsParseException*/
public static Date convertStringToDate(String strDate) throwsParseException {
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 newParseException(pe.getMessage(), pe.getErrorOffset());
}returnaDate;
}/*** 返回一个JAVA简单类型的日期字符串
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/
public staticString getSimpleDateFormat() {
SimpleDateFormat formatter= newSimpleDateFormat();
String NDateTime= formatter.format(newDate());returnNDateTime;
}/*** 将指定字符串格式的日期与当前时间比较
*
*@authorDYLAN
* @date Feb 17, 2012
*@paramstrDate
* 需要比较时间
*@return
* int code
*
*
-1 当前时间 < 比较时间*
0 当前时间 = 比较时间*
>=1当前时间 > 比较时间*
*
*/public static intcompareToCurTime(String strDate) {if(StringUtils.isBlank(strDate)) {return -1;
}
Date curTime=Calendar.getInstance().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)) {returnstrCurTime.compareTo(strDate);
}return -1;
}/*** 为查询日期添加最小时间
*
*@param目标类型Date
*@param转换参数Date
*@return
*/@SuppressWarnings("deprecation")public staticDate addStartTime(Date param) {
Date date=param;try{
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MILLISECOND,0);returncalendar.getTime();
}catch(Exception ex) {returndate;
}
}/*** 为查询日期添加最大时间
*
*@param目标类型Date
*@param转换参数Date
*@return
*/@SuppressWarnings("deprecation")public staticDate addEndTime(Date param) {
Date date=param;try{
date.setHours(23);
date.setMinutes(59);
date.setSeconds(59);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.MILLISECOND,999);returncalendar.getTime();
}catch(Exception ex) {returndate;
}
}/*** 返回系统现在年份中指定月份的天数
*
*@param月份month
*@return指定月的总天数*/@SuppressWarnings("deprecation")public static String getMonthLastDay(intmonth) {
Date date= newDate();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, intmonth) {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] + "";
}
}/*** 判断是平年还是闰年
*
*@authordylan_xu
* @date Mar 11, 2012
*@paramyear
*@return
*/
public static boolean isLeapyear(intyear) {if ((year % 4 == 0 && year % 100 != 0) || (year % 400) == 0) {return true;
}else{return false;
}
}/*** 取得当前时间的日戳
*
*@authordylan_xu
* @date Mar 11, 2012
*@return
*/@SuppressWarnings("deprecation")public staticString getTimestamp() {
Date date=Calendar.getInstance().getTime();
String timestamp= "" + (date.getYear() + 1900) + date.getMonth() + date.getDate() +date.getMinutes()+ date.getSeconds() +date.getTime();returntimestamp;
}/*** 取得指定时间的日戳
*
*@return
*/@SuppressWarnings("deprecation")public staticString getTimestamp(Date date) {
String timestamp= "" + (date.getYear() + 1900) + date.getMonth() + date.getDate() +date.getMinutes()+ date.getSeconds() +date.getTime();returntimestamp;
}/*** @Title: getStartTime
* @Description: 取某一天的最开始的时分秒
*@paramparam
*@return参数说明
*@returnString 返回类型*/
public staticString getStartTime(Date param) {returnsdf_datetime_format.format(addStartTime(param));
}public staticString getStartTime2(Date param) {returnsdf_datetime_format2.format(addStartTime(param));
}/*** @Title: getEndTime
* @Description: 取某一天的结束时分秒
*@paramparam
*@return参数说明
*@returnString 返回类型*/
public staticString getEndTime(Date param) {returnsdf_datetime_format.format(addEndTime(param));
}public staticString getEndTime2(Date param) {returnsdf_datetime_format2.format(addEndTime(param));
}/*** 获得当前时间,格式yyyy-MM-dd hh:mm:ss
*
*@paramformat
*@return
*/
public staticString getCurrentDate() {returngetCurrentDate(DATETIME_FORMAT);
}/*** 获得当前时间,格式自定义
*
*@paramformat
*@return
*/
public staticString getCurrentDate(String format) {if(StringUtils.isBlank(format)) {
format=DATETIME_FORMAT;
}
Calendar day=Calendar.getInstance();
day.add(Calendar.DATE,0);
SimpleDateFormat sdf= new SimpleDateFormat(format);//"yyyy-MM-dd"
String date =sdf.format(day.getTime());returndate;
}/*** 日期转字符串
*
*@paramdate
*@return
*/
public staticString date2String(Date date) {
SimpleDateFormat sdf= newSimpleDateFormat(DATETIME_FORMAT);returnsdf.format(date);
}/*** 获得昨天时间
*
*@return
*/
public staticString getYesterdayDate() {returngetYesterdayDate(DATETIME_FORMAT);
}/*** 获得昨天时间,格式自定义
*
*@paramformat
*@return
*/
public staticString getYesterdayDate(String format) {if ("".equals(format)) {
format=DATETIME_FORMAT;
}
Calendar day=Calendar.getInstance();
day.add(Calendar.DATE,-1);
SimpleDateFormat sdf= new SimpleDateFormat(format);//"yyyy-MM-dd"
String date =sdf.format(day.getTime());returndate;
}/***@paramdate1
* 需要比较的时间 不能为空(null),需要正确的日期格式 ,如:2009-09-12
*@paramdate2
* 被比较的时间 为空(null)则为当前时间
*@paramstype
* 返回值类型 0为多少天,1为多少个月,2为多少年
*@return举例: compareDate("2009-09-12", null, 0); //比较天
* compareDate("2009-09-12", null, 1);//比较月
* compareDate("2009-09-12", null, 2);//比较年*/
public static int compareDate(String startDay, String endDay, intstype) {int n = 0;
String formatStyle= stype == 1 ? "yyyy-MM" : "yyyy-MM-dd";
endDay= endDay == null ? getCurrentDate("yyyy-MM-dd") : endDay;
DateFormat df= newSimpleDateFormat(formatStyle);
Calendar c1=Calendar.getInstance();
Calendar c2=Calendar.getInstance();try{
c1.setTime(df.parse(startDay));
c2.setTime(df.parse(endDay));
}catch(Exception e3) {
System.out.println("wrong occured");
}//List list = new ArrayList();
while (!c1.after(c2)) { //循环对比,直到相等,n 就是所要的结果//list.add(df.format(c1.getTime()));//这里可以把间隔的日期存到数组中 打印出来
n++;if (stype == 1) {
c1.add(Calendar.MONTH,1); //比较月份,月份+1
} else{
c1.add(Calendar.DATE,1); //比较天数,日期+1
}
}
n= n - 1;if (stype == 2) {
n= (int) n / 365;
}//System.out.println(startDay+" -- "+endDay+" 相差多少"+u[stype]+":"+n);
returnn;
}/*** 判断时间是否符合时间格式*/
public static booleanisDate(String date, String dateFormat) {if (date != null) {
java.text.SimpleDateFormat format= newjava.text.SimpleDateFormat(dateFormat);
format.setLenient(false);try{
format.format(format.parse(date));
}catch(ParseException e) {return false;
}return true;
}return false;
}/*** 实现给定某日期,判断是星期几 date:必须yyyy-MM-dd格式*/
public staticString getWeekday(String date) {
SimpleDateFormat sd= new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdw= new SimpleDateFormat("E");
Date d= null;try{
d=sd.parse(date);
}catch(ParseException e) {
logger.error(e.getMessage(), e);
}returnsdw.format(d);
}/*** method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
*
*@paramdateString
* 需要转换为timestamp的字符串
*@returndataTime timestamp*/
public final staticjava.sql.Timestamp string2Time(String dateString) {
DateFormat dateFormat;
dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);//设定格式
dateFormat.setLenient(false);
java.util.Date date= null;try{
date=dateFormat.parse(dateString);
}catch(ParseException e) {
logger.error(e.getMessage(), e);
}//java.sql.Timestamp dateTime = new java.sql.Timestamp(date.getTime());
return new java.sql.Timestamp(date.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
}/*** method 将字符串类型的日期转换为一个Date(java.sql.Date)
*
*@paramdateString
* 需要转换为Date的字符串
*@returndataTime Date*/
public final staticjava.sql.Date string2Date(String dateString) {
DateFormat dateFormat;
dateFormat= new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
dateFormat.setLenient(false);
java.util.Date date= null;try{
date=dateFormat.parse(dateString);
}catch(ParseException e) {
logger.error(e.getMessage(), e);
}//java.sql.Date dateTime = new java.sql.Date(date.getTime());//sql类型
return newjava.sql.Date(date.getTime());
}/*** @Title: string2Date
* @Description:
*@paramdateString
*@paramdf
*@return参数说明
*@returnjava.util.Date 返回类型*/
public final staticjava.util.Date string2Date(String dateString,String df) {
DateFormat dateFormat= newSimpleDateFormat(df, Locale.SIMPLIFIED_CHINESE);
dateFormat.setLenient(false);
java.util.Date date= null;try{
date=dateFormat.parse(dateString);
}catch(ParseException e) {
logger.error(e.getMessage(), e);
}returndate;
}/*** 计算两个日期之间相差的天数
*
*@paramdate1
*@paramdate2
*@return
*/
public static intdaysBetween(Date date1, Date date2) {
Calendar cal=Calendar.getInstance();
cal.setTime(date1);long time1 =cal.getTimeInMillis();
cal.setTime(date2);long time2 =cal.getTimeInMillis();long between_days = (time2 - time1) / (1000 * 3600 * 24);returnInteger.parseInt(String.valueOf(between_days));
}/*** 取得当前日期N天后的日期
*
*@paramdate
*@paramdays
*@return
*/
public static Date addDays(intdays) {
Calendar cal=Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, days);returncal.getTime();
}/*** 取得指定日期N天后的日期
*
*@paramdate
*@paramdays
*@return
*/
public static Date addXDays(Date date, intdays) {
Calendar cal=Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, days);returncal.getTime();
}//记录考勤, 记录迟到、早退时间
public staticString getState() {
String state= "正常";
DateFormat df= new SimpleDateFormat("HH:mm:ss");
Date d= newDate();try{
Date d1= df.parse("08:00:00");
Date d2=df.parse(df.format(d));
Date d3= df.parse("17:30:00");int t1 = (int) d1.getTime();int t2 = (int) d2.getTime();int t3 = (int) d3.getTime();if (t2
long hour1 = between % (24 * 3600) / 3600;long minute1 = between % 3600 / 60;
state= "迟到 :" + hour1 + "时" + minute1 + "分";
}else if (t2
long hour1 = between % (24 * 3600) / 3600;long minute1 = between % 3600 / 60;
state= "早退 :" + hour1 + "时" + minute1 + "分";
}returnstate;
}catch(Exception e) {returnstate;
}
}/*** 得到二个日期间的间隔天数*/
public staticString getTwoDay(String sj1, String sj2) {
SimpleDateFormat myFormatter= new SimpleDateFormat("yyyy-MM-dd");long day = 0;try{
java.util.Date date=myFormatter.parse(sj1);
java.util.Date mydate=myFormatter.parse(sj2);
day= (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
}catch(Exception e) {return "";
}return day + "";
}/*** 根据一个日期,返回是星期几的字符串
*
*@paramsdate
*@return
*/
public staticString getWeek(String sdate) {//再转换为时间
Date date =strToDate(sdate);
Calendar c=Calendar.getInstance();
c.setTime(date);//int hour=c.get(Calendar.DAY_OF_WEEK);//hour中存的就是星期几了,其范围 1~7//1=星期日 7=星期六,其他类推
return new SimpleDateFormat("EEEE").format(c.getTime());
}/*** 将短时间格式字符串转换为时间 yyyy-MM-dd
*
*@paramstrDate
*@return
*/
public staticDate strToDate(String strDate) {
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos= new ParsePosition(0);
Date strtodate=formatter.parse(strDate, pos);returnstrtodate;
}/*** 两个时间之间的天数
*
*@paramdate1
*@paramdate2
*@return
*/
public static longgetDays(String date1, String date2) {if (date1 == null || date1.equals(""))return 0;if (date2 == null || date2.equals(""))return 0;//转换为标准时间
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date= null;
java.util.Date mydate= null;try{
date=myFormatter.parse(date1);
mydate=myFormatter.parse(date2);
}catch(Exception e) {
}long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);returnday;
}//计算当月最后一天,返回字符串
public staticString getDefaultDay() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.set(Calendar.DATE,1);//设为当前月的1号
lastDate.add(Calendar.MONTH, 1);//加一个月,变为下月的1号
lastDate.add(Calendar.DATE, -1);//减去一天,变为当月最后一天
str=sdf.format(lastDate.getTime());returnstr;
}//计算当月最后一天,返回字符串
public staticString getLastDayTimeOfMonth() {
String str= "";
SimpleDateFormat sdf= newSimpleDateFormat(DATETIME_FORMAT);
Calendar lastDate=Calendar.getInstance();
lastDate.set(Calendar.DATE,1);//设为当前月的1号
lastDate.add(Calendar.MONTH, 1);//加一个月,变为下月的1号
lastDate.add(Calendar.DATE, -1);//减去一天,变为当月最后一天
lastDate.set(Calendar.HOUR_OF_DAY, 23);
lastDate.set(Calendar.MINUTE,59);
lastDate.set(Calendar.SECOND,59);
str=sdf.format(lastDate.getTime());returnstr;
}//计算当月最后一天,返回字符串
public staticString getLastDayTimeOfMonth2() {
String str= "";
SimpleDateFormat sdf= newSimpleDateFormat(yyyyMMddHHmmss_FORMAT);
Calendar lastDate=Calendar.getInstance();
lastDate.set(Calendar.DATE,1);//设为当前月的1号
lastDate.add(Calendar.MONTH, 1);//加一个月,变为下月的1号
lastDate.add(Calendar.DATE, -1);//减去一天,变为当月最后一天
lastDate.set(Calendar.HOUR_OF_DAY, 23);
lastDate.set(Calendar.MINUTE,59);
lastDate.set(Calendar.SECOND,59);
str=sdf.format(lastDate.getTime());returnstr;
}//上月第一天
public staticString getPreviousMonthFirst() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.set(Calendar.DATE,1);//设为当前月的1号
lastDate.add(Calendar.MONTH, -1);//减一个月,变为下月的1号//lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
str=sdf.format(lastDate.getTime());returnstr;
}//获取当月第一天
public staticString getFirstDayOfMonth() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.set(Calendar.DATE,1);//设为当前月的1号
str =sdf.format(lastDate.getTime());returnstr;
}public staticString getFirstDayTimeOfMonth() {
String str= "";
SimpleDateFormat sdf= newSimpleDateFormat(DATETIME_FORMAT);
Calendar lastDate=Calendar.getInstance();
lastDate.set(Calendar.DATE,1);//设为当前月的1号
lastDate.set(Calendar.HOUR_OF_DAY, 0);
lastDate.set(Calendar.MINUTE,0);
lastDate.set(Calendar.SECOND,0);
str=sdf.format(lastDate.getTime());returnstr;
}public staticString getFirstDayTimeOfMonth2() {
String str= "";
SimpleDateFormat sdf= newSimpleDateFormat(yyyyMMddHHmmss_FORMAT);
Calendar lastDate=Calendar.getInstance();
lastDate.set(Calendar.DATE,1);//设为当前月的1号
lastDate.set(Calendar.HOUR_OF_DAY, 0);
lastDate.set(Calendar.MINUTE,0);
lastDate.set(Calendar.SECOND,0);
str=sdf.format(lastDate.getTime());returnstr;
}//获得本周星期日的日期
public staticString getCurrentWeekday() {
weeks= 0;int mondayPlus =getMondayPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus+ 6);
Date monday=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preMonday=df.format(monday);returnpreMonday;
}//获取当天时间
public staticString getNowTime(String dateformat) {
Date now= newDate();
SimpleDateFormat dateFormat= new SimpleDateFormat(dateformat);//可以方便地修改日期格式
String hehe =dateFormat.format(now);returnhehe;
}//获得当前日期与本周日相差的天数
public static intgetMondayPlus() {
Calendar cd=Calendar.getInstance();//获得今天是一周的第几天,星期日是第一天,星期二是第二天......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; //因为按中国礼拜一作为第一天所以这里减1
if (dayOfWeek == 1) {return 0;
}else{return 1 -dayOfWeek;
}
}//获得本周一的日期
public staticString getMondayOFWeek() {
weeks= 0;int mondayPlus =getMondayPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
Date monday=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preMonday=df.format(monday);returnpreMonday;
}//获得相应周的周六的日期
public staticString getSaturday() {int mondayPlus =getMondayPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus+ 7 * weeks + 6);
Date monday=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preMonday=df.format(monday);returnpreMonday;
}//获得上周星期日的日期
public staticString getPreviousWeekSunday() {
weeks= 0;
weeks--;int mondayPlus =getMondayPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);
Date monday=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preMonday=df.format(monday);returnpreMonday;
}//获得上周星期一的日期
public staticString getPreviousWeekday() {
weeks--;int mondayPlus =getMondayPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus+ 7 *weeks);
Date monday=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preMonday=df.format(monday);returnpreMonday;
}//获得下周星期一的日期
public staticString getNextMonday() {
weeks++;int mondayPlus =getMondayPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus+ 7);
Date monday=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preMonday=df.format(monday);returnpreMonday;
}//获得下周星期日的日期
public staticString getNextSunday() {int mondayPlus =getMondayPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus+ 7 + 6);
Date monday=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preMonday=df.format(monday);returnpreMonday;
}public static intgetMonthPlus() {
Calendar cd=Calendar.getInstance();int monthOfNumber =cd.get(Calendar.DAY_OF_MONTH);
cd.set(Calendar.DATE,1);//把日期设置为当月第一天
cd.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天
MaxDate =cd.get(Calendar.DATE);if (monthOfNumber == 1) {return -MaxDate;
}else{return 1 -monthOfNumber;
}
}//获得上月最后一天的日期
public staticString getPreviousMonthEnd() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.add(Calendar.MONTH,-1);//减一个月
lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天
lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天
str =sdf.format(lastDate.getTime());returnstr;
}//获得下个月第一天的日期
public staticString getNextMonthFirst() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.add(Calendar.MONTH,1);//减一个月
lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天
str =sdf.format(lastDate.getTime());returnstr;
}//获得下个月最后一天的日期
public staticString getNextMonthEnd() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.add(Calendar.MONTH,1);//加一个月
lastDate.set(Calendar.DATE, 1);//把日期设置为当月第一天
lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天
str =sdf.format(lastDate.getTime());returnstr;
}//获得明年最后一天的日期
public staticString getNextYearEnd() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.add(Calendar.YEAR,1);//加一个年
lastDate.set(Calendar.DAY_OF_YEAR, 1);
lastDate.roll(Calendar.DAY_OF_YEAR,-1);
str=sdf.format(lastDate.getTime());returnstr;
}//获得明年第一天的日期
public staticString getNextYearFirst() {
String str= "";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate=Calendar.getInstance();
lastDate.add(Calendar.YEAR,1);//加一个年
lastDate.set(Calendar.DAY_OF_YEAR, 1);
str=sdf.format(lastDate.getTime());returnstr;
}//获得本年有多少天
public static intgetMaxYear() {
Calendar cd=Calendar.getInstance();
cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天
cd.roll(Calendar.DAY_OF_YEAR, -1);//把日期回滚一天。
int MaxYear =cd.get(Calendar.DAY_OF_YEAR);returnMaxYear;
}public static intgetYearPlus() {
Calendar cd=Calendar.getInstance();int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天
cd.set(Calendar.DAY_OF_YEAR, 1);//把日期设为当年第一天
cd.roll(Calendar.DAY_OF_YEAR, -1);//把日期回滚一天。
int MaxYear =cd.get(Calendar.DAY_OF_YEAR);if (yearOfNumber == 1) {return -MaxYear;
}else{return 1 -yearOfNumber;
}
}//获得本年第一天的日期
public staticString getCurrentYearFirst() {int yearPlus =getYearPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, yearPlus);
Date yearDay=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preYearDay=df.format(yearDay);returnpreYearDay;
}//获得本年最后一天的日期 *
public staticString getCurrentYearEnd() {
Date date= newDate();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy");//可以方便地修改日期格式
String years =dateFormat.format(date);return years + "-12-31";
}//获得上年第一天的日期 *
public staticString getPreviousYearFirst() {
Date date= newDate();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy");//可以方便地修改日期格式
String years =dateFormat.format(date);int years_value =Integer.parseInt(years);
years_value--;return years_value + "-1-1";
}//获得上年最后一天的日期
public staticString getPreviousYearEnd() {
weeks--;int yearPlus =getYearPlus();
GregorianCalendar currentDate= newGregorianCalendar();
currentDate.add(GregorianCalendar.DATE, yearPlus+ MaxYear * weeks + (MaxYear - 1));
Date yearDay=currentDate.getTime();
DateFormat df=DateFormat.getDateInstance();
String preYearDay=df.format(yearDay);
getThisSeasonTime(11);returnpreYearDay;
}//获得本季度
public static String getThisSeasonTime(intmonth) {int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12} };int season = 1;if (month >= 1 && month <= 3) {
season= 1;
}if (month >= 4 && month <= 6) {
season= 2;
}if (month >= 7 && month <= 9) {
season= 3;
}if (month >= 10 && month <= 12) {
season= 4;
}int start_month = array[season - 1][0];int end_month = array[season - 1][2];
Date date= newDate();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy");//可以方便地修改日期格式
String years =dateFormat.format(date);int years_value =Integer.parseInt(years);int start_days = 1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
int end_days =getLastDayOfMonth(years_value, end_month);
String seasonDate= years_value + "-" + start_month + "-" + start_days + ";" + years_value + "-" +end_month+ "-" +end_days;returnseasonDate;
}/*** 获取某年某月的最后一天
*
*@paramyear
* 年
*@parammonth
* 月
*@return最后一天*/
public static int getLastDayOfMonth(int year, intmonth) {if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {return 31;
}if (month == 4 || month == 6 || month == 9 || month == 11) {return 30;
}if (month == 2) {if(isLeapYear(year)) {return 29;
}else{return 28;
}
}return 0;
}/*** 是否闰年
*
*@paramyear
* 年
*@return
*/
public static boolean isLeapYear(intyear) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}/***
* @Title: getNowTimeStampTime
* @Description: 获取当前时间(TimeStamp类型的)
*@return*@returnTimestamp
*@throws
*/
public staticTimestamp getNowTimeStampTime() {
Timestamp time= newTimestamp(System.currentTimeMillis());returntime;
}/***
* @Title: calcTwoTimeDifferInOneHour
* @Description: 计算最后一次访问时间距离现在时间是不是在1小时之内。
*@paramlastestVisitTime
* 最后一次访问的毫秒时间
*@paramnowTime
* 现在的毫秒时间
*@returnvoid
*@throws
*/
public static booleancalcTwoTimeDifferInOneHour(Long lastestVisitTime, Long nowTime) {long differ = nowTime - lastestVisitTime;//两个时间的毫秒差
long differHour = differ / (60 * 60 * 1000);if (differHour < 1) {return true;
}return false;
}/*** @Title: compareDate
* @Description: 比较时间大小(第一个时间在第二个时间之前返回-1;第一个时间在第二个时间之后返回1,相同返回0)
*@paramdt1
*@paramdt2
*@return参数说明
*@returnint 返回类型*/
public static intcompareDate(Date dt1, Date dt2) {try{if (dt1.getTime() >dt2.getTime()) {return 1;
}else if (dt1.getTime()
}else{return 0;
}
}catch(Exception e) {
logger.error(e.getMessage(), e);
}return 0;
}public staticString getPreviousMonth(String dateFormat) {
String str= "";
SimpleDateFormat sdf= newSimpleDateFormat(dateFormat);
Calendar lastDate=Calendar.getInstance();
lastDate.add(Calendar.MONTH,-1);
str=sdf.format(lastDate.getTime());returnstr;
}
}