import java.security.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
/**
* 要用到的DATE Format的定义
*/
public static String DATE_FORMAT_DATEONLY = "yyyy-MM-dd"; // 年/月/日
public static String DATE_FORMAT_DATETIME = "yyyy-MM-dd HH:mm:ss"; // 年/月/日
public static String DATE_FORMAT_SHORT = "yyyyMMdd";
public static SimpleDateFormat sdfDateTime = new SimpleDateFormat(DateUtils.DATE_FORMAT_DATETIME);
public static SimpleDateFormat sdfDateOnly = new SimpleDateFormat(DateUtils.DATE_FORMAT_DATEONLY);
public static SimpleDateFormat sdfDateShort = new SimpleDateFormat(DateUtils.DATE_FORMAT_SHORT);
public static final SimpleDateFormat formatTimestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat SHORTDATEFORMAT = new SimpleDateFormat("yyyyMMdd");
public static final SimpleDateFormat SHORT_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
public static final SimpleDateFormat LONG_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat LONG_DATE_FORMAT_SSS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
public static final SimpleDateFormat LONG_DATE_FORMAT_SSS_ORDER = new SimpleDateFormat("yyyyMMddHHmmssSSS");
public static final SimpleDateFormat HMS_FORMAT = new SimpleDateFormat("HH:mm:ss");
/**
* 根据日期格式字符串解析日期字符串
*
* @param str 日期字符串
* @param parsePatterns 日期格式字符串
* @return 解析后日期
* @throws ParseException
*/
public static Date parseDate(String str, String parsePatterns) throws ParseException {
return parseDate(str, new String[] { parsePatterns });
}
/**
* 根据单位字段比较两个日期
*
* @param date 日期1
* @param otherDate 日期2
* @param withUnit 单位字段,从Calendar field取值
* @return 等于返回0值, 大于返回大于0的值 小于返回小于0的值
*/
public static int compareDate(Date date, Date otherDate, int withUnit) {
Calendar dateCal = Calendar.getInstance();
dateCal.setTime(date);
Calendar otherDateCal = Calendar.getInstance();
otherDateCal.setTime(otherDate);
switch (withUnit) {
case Calendar.YEAR:
dateCal.clear(Calendar.MONTH);
otherDateCal.clear(Calendar.MONTH);
case Calendar.MONTH:
dateCal.set(Calendar.DATE, 1);
otherDateCal.set(Calendar.DATE, 1);
case Calendar.DATE:
dateCal.set(Calendar.HOUR_OF_DAY, 0);
otherDateCal.set(Calendar.HOUR_OF_DAY, 0);
case Calendar.HOUR:
dateCal.clear(Calendar.MINUTE);
otherDateCal.clear(Calendar.MINUTE);
case Calendar.MINUTE:
dateCal.clear(Calendar.SECOND);
otherDateCal.clear(Calendar.SECOND);
case Calendar.SECOND:
dateCal.clear(Calendar.MILLISECOND);
otherDateCal.clear(Calendar.MILLISECOND);
case Calendar.MILLISECOND:
break;
default:
throw new IllegalArgumentException("withUnit 单位字段 " + withUnit + " 不合法!!");
}
return dateCal.compareTo(otherDateCal);
}
/**
* 根据单位字段比较两个时间
*
* @param date 时间1
* @param otherDate 时间2
* @param withUnit 单位字段,从Calendar field取值
* @return 等于返回0值, 大于返回大于0的值 小于返回小于0的值
*/
public static int compareTime(Date date, Date otherDate, int withUnit) {
Calendar dateCal = Calendar.getInstance();
dateCal.setTime(date);
Calendar otherDateCal = Calendar.getInstance();
otherDateCal.setTime(otherDate);
dateCal.clear(Calendar.YEAR);
dateCal.clear(Calendar.MONTH);
dateCal.set(Calendar.DATE, 1);
otherDateCal.clear(Calendar.YEAR);
otherDateCal.clear(Calendar.MONTH);
otherDateCal.set(Calendar.DATE, 1);
switch (withUnit) {
case Calendar.HOUR:
dateCal.clear(Calendar.MINUTE);
otherDateCal.clear(Calendar.MINUTE);
case Calendar.MINUTE:
dateCal.clear(Calendar.SECOND);
otherDateCal.clear(Calendar.SECOND);
case Calendar.SECOND:
dateCal.clear(Calendar.MILLISECOND);
otherDateCal.clear(Calendar.MILLISECOND);
case Calendar.MILLISECOND:
break;
default:
throw new IllegalArgumentException("withUnit 单位字段 " + withUnit + " 不合法!!");
}
return dateCal.compareTo(otherDateCal);
}
/**
* 获得当前的日期毫秒
*
* @return
*/
public static long nowTimeMillis() {
return System.currentTimeMillis();
}
/**
* yyyy-MM-dd 当前日期
*
*/
public static String getReqDate() {
return SHORTDATEFORMAT.format(new Date());
}
/**
* yyyy-MM-dd 传入日期
*
* @param date
* @return
*/
public static String getReqDate(Date date) {
return SHORT_DATE_FORMAT.format(date);
}
/**
* yyyyMMdd 传入日期
*
* @param date
* @return
*/
public static String getReqDateyyyyMMdd(Date date) {
return SHORTDATEFORMAT.format(date);
}
/**
* yyyy-MM-dd 传入的时间戳
*
* @param tmp
* @return
*/
public static String TimestampToDateStr(Timestamp tmp) {
return SHORT_DATE_FORMAT.format(tmp);
}
/**
* HH:mm:ss 当前时间
*
* @return
*/
public static String getReqTime() {
return HMS_FORMAT.format(new Date());
}
/**
* 得到时间戳格式字串
*
* @param date
* @return
*/
public static String getTimeStampStr(Date date) {
return LONG_DATE_FORMAT.format(date);
}
/**
* 得到长日期格式字串
*
* @return
*/
public static String getLongDateStr() {
return LONG_DATE_FORMAT.format(new Date());
}
public static String getLongDateStr(Timestamp time) {
return LONG_DATE_FORMAT.format(time);
}
/**
* 得到短日期格式字串
*
* @param date
* @return
*/
public static String getShortDateStr(Date date) {
return SHORT_DATE_FORMAT.format(date);
}
public static String getShortDateStr() {
return SHORT_DATE_FORMAT.format(new Date());
}
/**
* 计算 second 秒后的时间
*
* @param date
* @param second
* @return
*/
public static Date addSecond(Date date, int second) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
;
calendar.add(Calendar.SECOND, second);
return calendar.getTime();
}
/**
* 计算 minute 分钟后的时间
*
* @param date
* @param minute
* @return
*/
public static Date addMinute(Date date, int minute) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MINUTE, minute);
return calendar.getTime();
}
/**
* 计算 hour 小时后的时间
*
* @param date
* @param hour
* @return
*/
public static Date addHour(Date date, int hour) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, hour);
return calendar.getTime();
}
/**
* 得到day的起始时间点。
*
* @param date
* @return
*/
public static Date getDayStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 得到day的终止时间点.
*
* @param date
* @return
*/
public static Date getDayEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.MILLISECOND, -1);
return calendar.getTime();
}
/**
* 计算 day 天后的时间
*
* @param date
* @param day
* @return
*/
public static Date addDay(Date date, int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, day);
return calendar.getTime();
}
/**
* 得到month的终止时间点.
*
* @param date
* @return
*/
public static Date getMonthEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.MILLISECOND, -1);
return calendar.getTime();
}
public static Date addYear(Date date, int year) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_YEAR, 365 * year);
return calendar.getTime();
}
/**
* 返回java.sql.Timestamp型的SYSDATE
*
* @return java.sql.Timestamp型的SYSDATE
* @since 1.0
* @history
*/
public static java.sql.Timestamp getSysDateTimestamp() {
return new java.sql.Timestamp(System.currentTimeMillis());
}
// 得到当前日期的星期
public static int getWeek() {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int w = cal.get(Calendar.DAY_OF_WEEK);
return w;
}
/**
* 得到当前周起始时间
*
* @param date
* @return
*/
public static Date getWeekStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.get(Calendar.WEEK_OF_YEAR);
int firstDay = calendar.getFirstDayOfWeek();
calendar.set(Calendar.DAY_OF_WEEK, firstDay);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 得到当前周截止时间
*
* @param date
* @return
*/
public static Date getWeekEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.get(Calendar.WEEK_OF_YEAR);
int firstDay = calendar.getFirstDayOfWeek();
calendar.set(Calendar.DAY_OF_WEEK, 8 - firstDay);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 得到当月起始时间
*
* @param date
* @return
*/
public static Date getMonthStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 得到当前年起始时间
*
* @param date
* @return
*/
public static Date getYearStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 得到当前年最后一天
*
* @param date
* @return
*/
public static Date getYearEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR));
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DAY_OF_MONTH, 31);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 取得月天数
*
* @param date
* @return
*/
public static int getDayOfMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 取得月第一天
*
* @param date
* @return
*/
public static Date getFirstDateOfMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
return c.getTime();
}
/**
* 取得月最后一天
*
* @param date
* @return
*/
public static Date getLastDateOfMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
return c.getTime();
}
/**
* 取得季度第一天
*
* @param date
* @return
*/
public static Date getSeasonStart(Date date) {
return getDayStart(getFirstDateOfMonth(getSeasonDate(date)[0]));
}
/**
* 取得季度最后一天
*
* @param date
* @return
*/
public static Date getSeasonEnd(Date date) {
return getDayEnd(getLastDateOfMonth(getSeasonDate(date)[2]));
}
/**
* 取得季度月
*
* @param date
* @return
*/
public static Date[] getSeasonDate(Date date) {
Date[] season = new Date[3];
Calendar c = Calendar.getInstance();
c.setTime(date);
int nSeason = getSeason(date);
if (nSeason == 1) {// 第一季度
c.set(Calendar.MONTH, Calendar.JANUARY);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.FEBRUARY);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.MARCH);
season[2] = c.getTime();
} else if (nSeason == 2) {// 第二季度
c.set(Calendar.MONTH, Calendar.APRIL);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.MAY);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.JUNE);
season[2] = c.getTime();
} else if (nSeason == 3) {// 第三季度
c.set(Calendar.MONTH, Calendar.JULY);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.AUGUST);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.SEPTEMBER);
season[2] = c.getTime();
} else if (nSeason == 4) {// 第四季度
c.set(Calendar.MONTH, Calendar.OCTOBER);
season[0] = c.getTime();
c.set(Calendar.MONTH, Calendar.NOVEMBER);
season[1] = c.getTime();
c.set(Calendar.MONTH, Calendar.DECEMBER);
season[2] = c.getTime();
}
return season;
}
/**
*
* 1 第一季度 2 第二季度 3 第三季度 4 第四季度
*
* @param date
* @return
*/
public static int getSeason(Date date) {
int season = 0;
Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
switch (month) {
case Calendar.JANUARY:
case Calendar.FEBRUARY:
case Calendar.MARCH:
season = 1;
break;
case Calendar.APRIL:
case Calendar.MAY:
case Calendar.JUNE:
season = 2;
break;
case Calendar.JULY:
case Calendar.AUGUST:
case Calendar.SEPTEMBER:
season = 3;
break;
case Calendar.OCTOBER:
case Calendar.NOVEMBER:
case Calendar.DECEMBER:
season = 4;
break;
default:
break;
}
return season;
}
public static int getWeekOfYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
return calendar.get(Calendar.WEEK_OF_YEAR);
}
public static int getMonthOfYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
return calendar.get(Calendar.WEEK_OF_MONTH);
}
/**
* 判断输入日期是一个星期中的第几天(星期天为一个星期第一天)
*
* @param date
* @return
*/
public static int getWeekIndex(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_WEEK);
}
/**
* 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制 如:开始时间和结束时间,不能超出距离当前时间90天
*
* @param startDate 开始时间
* @param endDate 结束时间按
* @param interval 间隔数
* @param dateUnit 单位(如:月,日),参照Calendar的时间单位
* @return
*/
public static boolean isOverIntervalLimit(Date startDate, Date endDate, int interval, int dateUnit) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(dateUnit, interval * (-1));
Date curDate = getDayStart(cal.getTime());
if (getDayStart(startDate).compareTo(curDate) < 0 || getDayStart(endDate).compareTo(curDate) < 0) {
return true;
}
return false;
}
/**
* 判断开始时间和结束时间,是否超出了当前时间的一定的间隔数限制, 时间单位默认为天数 如:开始时间和结束时间,不能超出距离当前时间90天
*
* @param startDate 开始时间
* @param endDate 结束时间按
* @param interval 间隔数
* @return
*/
public static boolean isOverIntervalLimit(Date startDate, Date endDate, int interval) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DAY_OF_MONTH, interval * (-1));
Date curDate = getDayStart(cal.getTime());
if (getDayStart(startDate).compareTo(curDate) < 0 || getDayStart(endDate).compareTo(curDate) < 0) {
return true;
}
return false;
}
/**
* 传入时间字符串及时间格式,返回对应的Date对象
*
* @param src 时间字符串
* @param pattern 时间格式
* @return Date
*/
public static java.util.Date getDateFromString(String src, String pattern) {
SimpleDateFormat f = new SimpleDateFormat(pattern);
try {
return f.parse(src);
} catch (ParseException e) {
return null;
}
}
/**
* 取季度
*
* @param date
* @return
*/
@SuppressWarnings("deprecation")
public static int getQuarter(Date date) {
if (date.getMonth() == 0 || date.getMonth() == 1 || date.getMonth() == 2) {
return 1;
} else if (date.getMonth() == 3 || date.getMonth() == 4 || date.getMonth() == 5) {
return 2;
} else if (date.getMonth() == 6 || date.getMonth() == 7 || date.getMonth() == 8) {
return 3;
} else if (date.getMonth() == 9 || date.getMonth() == 10 || date.getMonth() == 11) {
return 4;
} else {
return 0;
}
}
/**
* 字符转日期
*
* @param dateStr
* @return
*/
public static Date getDateByStr(String dateStr) {
SimpleDateFormat formatter = null;
if (dateStr == null) {
return null;
} else if (dateStr.length() == 10) {
formatter = new SimpleDateFormat("yyyy-MM-dd");
} else if (dateStr.length() == 16) {
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
} else if (dateStr.length() == 19) {
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} else if (dateStr.length() > 19) {
dateStr = dateStr.substring(0, 19);
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
} else {
return null;
}
try {
return formatter.parse(dateStr);
} catch (ParseException e) {
return null;
}
}
/**
* 根据传入的数字,输出相比现在days天的数据
*
* @param days
* @return Date
*/
public static Date getDate(int days) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, days);
return calendar.getTime();
}
/**
* 月的最后一天
*
* @param date
* @return
*/
@SuppressWarnings("deprecation")
public static Date getLastDayOfMonth(Date date) {
Calendar cDay1 = Calendar.getInstance();
cDay1.setTime(date);
int lastDay = cDay1.getActualMaximum(Calendar.DAY_OF_MONTH);
Date lastDate = cDay1.getTime();
lastDate.setDate(lastDay);
return lastDate;
}
/**
* 月的第一天
*
* @param date
* @return
*/
public static Date getFirstDayOfMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));
return calendar.getTime();
}
/**
* 两个日期相关天数
*
* @param startDate
* @param endDate
* @return
*/
public static long getDateDiff(String startDate, String endDate) {
long diff = 0;
try {
Date date1 = new SimpleDateFormat("yyyy-MM-dd").parse(startDate);
Date date2 = new SimpleDateFormat("yyyy-MM-dd").parse(endDate);
diff = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000) > 0
? (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000)
: (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000);
} catch (ParseException e) {
}
return diff;
}
/*
* 判断两个时间是不是在一个周中
*/
public static boolean isSameWeekWithToday(Date date) {
if (date == null) {
return false;
}
// 0.先把Date类型的对象转换Calendar类型的对象
Calendar todayCal = Calendar.getInstance();
Calendar dateCal = Calendar.getInstance();
todayCal.setTime(new Date());
dateCal.setTime(date);
int subYear = todayCal.get(Calendar.YEAR) - dateCal.get(Calendar.YEAR);
// subYear==0,说明是同一年
if (subYear == 0) {
if (todayCal.get(Calendar.WEEK_OF_YEAR) == dateCal.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (subYear == 1 && dateCal.get(Calendar.MONTH) == 11 && todayCal.get(Calendar.MONTH) == 0) {
if (todayCal.get(Calendar.WEEK_OF_YEAR) == dateCal.get(Calendar.WEEK_OF_YEAR))
return true;
} else if (subYear == -1 && todayCal.get(Calendar.MONTH) == 11 && dateCal.get(Calendar.MONTH) == 0) {
if (todayCal.get(Calendar.WEEK_OF_YEAR) == dateCal.get(Calendar.WEEK_OF_YEAR))
return true;
}
return false;
}
/**
* getStrFormTime:
*
* @param form 格式时间
* @param date 时间
* @return
*/
public static String getStrFormTime(String form, Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(form);
return sdf.format(date);
}
/**
* 获取几天内日期 return 2014-5-4、2014-5-3
*/
public static List<String> getLastDays(int countDay) {
List<String> listDate = new ArrayList<String>();
for (int i = 0; i < countDay; i++) {
listDate.add(DateUtils.getReqDateyyyyMMdd(DateUtils.getDate(-i)));
}
return listDate;
}
/**
* 对时间进行格式化
*
* @param date
* @return
*/
public static Date dateFormat(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date value = new Date();
try {
value = sdf.parse(sdf.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
return value;
}
/**
* 利用指定SimpleDateFormat instance转换java.util.Date到String
*
* @param dt java.util.Date instance
* @param formatter SimpleDateFormat Instance
* @return
* @since 1.0
* @history
*/
public static String toFormatDate(java.util.Date dt, SimpleDateFormat formatter) throws Exception {
String sRet = null;
try {
sRet = formatter.format(dt).toString();
} catch (Exception e) {
sRet = null;
}
return sRet;
}
/**
* 以传入的日期为标准,得到第n天后(负为前)的日期yyyy-MM-dd
* @param date
* @param n
* @return
*/
public static Date getDate(Date date,int n) {
//Date dBefore = DateUtils.addDay(date,n);
Calendar calendar = Calendar.getInstance(); //得到日历
calendar.setTime(date);//把当前时间赋给日历
calendar.add(Calendar.DAY_OF_MONTH, n); //设置为某一天
date = calendar.getTime(); //得到某一天的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String s = sdf.format(date);
Date dateOfDay;
try {
dateOfDay = sdf.parse(s);
return dateOfDay;
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 得到当前月的第一天
* @return
*/
public static Date getFirstDayThisMonth() {
String firstDay;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//获取当前月第一天:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
firstDay = format.format(c.getTime());
//System.out.println("===============first:"+firstDay);
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date=simpleDateFormat.parse(firstDay);
//System.out.println(date);
return date;
} catch(ParseException px) {
System.out.println(px.getMessage());
return null;
}
}
/**
* 得到上个月的第一天
* @return
*/
public static Date getFirstDayLastMonth() {
String firstDay;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//获取前月的第一天
Calendar cal_1 = Calendar.getInstance();//获取当前日期
cal_1.add(Calendar.MONTH, -1);
cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
firstDay = format.format(cal_1.getTime());
//System.out.println("-----1------firstDay:"+firstDay);
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date=simpleDateFormat.parse(firstDay);
//System.out.println(date);
return date;
} catch(ParseException px) {
System.out.println(px.getMessage());
return null;
}
}
/**
* 得到上个月的最后一天
* @return
*/
public static Date getLastDayLastMonth() {
String lastDay;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//获取前月的最后一天
Calendar cale = Calendar.getInstance();
cale.set(Calendar.DAY_OF_MONTH,0);//设置为1号,当前日期既为本月第一天
lastDay = format.format(cale.getTime());
//System.out.println("-----2------lastDay:"+lastDay);
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date=simpleDateFormat.parse(lastDay);
//System.out.println(date);
return date;
} catch(ParseException px) {
System.out.println(px.getMessage());
return null;
}
}
public static void main(String[] args) {
try {
Date date = DateUtils.parseDate("2017-01-01",DATE_FORMAT_DATEONLY);
System.out.println(DateUtils.toFormatDate(date,SHORTDATEFORMAT));
System.out.println(getDate(new Date(), 3));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
日期工具类
于 2020-12-15 22:27:30 首次发布