首先需要这两个jdk自带工具类
java.util.Calendar; java.util.Date;
/**
* 获得指定日期的后N天
* @param
* @return
*/
public static Date getSpecifiedDayAfter(Date date,int num){
Calendar c = Calendar.getInstance();
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day+num);
return c.getTime();
}
/**
* 获得指定日期的前N天
*
* @param
* @return
*/
public static Date getSpecifiedDayBefore(Date date, int num) {
Calendar c = Calendar.getInstance();
c.setTime(date);
int day = c.get(Calendar.DATE);
c.set(Calendar.DATE, day - num);
return c.getTime();
}
/**
* 比较两个时间大小
* @param first
* @param second
* @return
* <0: first<second
* =0: first=second
* >0: first>second
*/
public static int compareTwoDate(Date first, Date second){
Calendar c1= Calendar.getInstance();
Calendar c2= Calendar.getInstance();
c1.setTime(first);
c2.setTime(second);
return c1.compareTo(c2);
}
/**
* 取得当前日期所在周的第一天
*
* @param date
* @return
*/
public static Date getFirstDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
return c.getTime ();
}
/**
* 取得当前日期所在周的最后一天
*
* @param date
* @return
*/
public static Date getLastDayOfWeek(Date date) {
Calendar c = new GregorianCalendar();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.setTime(date);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
return c.getTime();
}
/**
* 计算日期增加或减少小时数后的日期
* @param date
* @param i 为负表示减多少小时
* @return
*/
public static Date addHH(Date date,int i){
if(date==null)return null;
Calendar c = new GregorianCalendar();
c.setTime(date);
c.add(Calendar.HOUR, i);
return c.getTime();
}
/**
* 计算日期增加或减少分钟数后的日期
* @param date
* @param i 为负表示减多少分钟
* @return
*/
public static Date addMM(Date date,int i){
if(date==null)return null;
Calendar c = new GregorianCalendar();
c.setTime(date);
c.add(Calendar.MINUTE, i);
return c.getTime();
}
/**
* 计算日期增加或减少秒数后的日期
* @param date
* @param i 为负表示减多少秒
* @return
*/
public static Date addSS(Date date,int i){
if(date==null)return null;
Calendar c = new GregorianCalendar();
c.setTime(date);
c.add(Calendar.SECOND, i);
return c.getTime();
}
/**
* 计算日期增加减少天数后的日期
* @param date
* @param i 为负表示减多少天
* @return
*/
public static Date addDate(Date date,int i){
if(date==null)return null;
Calendar c = new GregorianCalendar();
c.setTime(date);
c.add(Calendar.DATE, i);
return c.getTime();
}
/**
* 计算日期增加减少月数后的日期
* @param date
* @param i 为负表示减多少月
* @return
*/
public static Date addMonth(Date date,int i){
if(date==null)return null;
Calendar c = new GregorianCalendar();
c.setTime(date);
c.add(Calendar.MONTH, i);
return c.getTime();
}
/**
* 计算日期增加减少年数后的日期
* @param date
* @param i 为负表示减多少年
* @return
*/
public static Date addYear(Date date,int i){
if(date==null)return null;
Calendar c = new GregorianCalendar();
c.setTime(date);
c.add(Calendar.YEAR, i);
return c.getTime();
}
/**
* 获得当前时间字符串
* @param formatStr 日期格式
* @return string yyyy-MM-dd
*/
public static String getNowDateStr(String formatStr) {
SimpleDateFormat format = new SimpleDateFormat(formatStr);
return format.format(getNowDate());
}
/**
* 获得系统当前时间
* @return Date
*/
public static Date getNowDate(){
Calendar c = Calendar.getInstance();
return c.getTime();
}
/**
* 把日期按照指定格式的转化成字符串
* @param date 日期对象
* @param formatStr 日期格式
* @return 字符串式的日期,格式为:yyyy-MM-dd HH:mm:ss
*/
public static String getDateTimeToString(Date date,String formatStr) {
SimpleDateFormat format = new SimpleDateFormat(formatStr);
return format.format(date);
}
/**
* 获得当前时间的i分钟后(或前,用负数表示)的时间
* @param i
* @return
*/
public static String addMM(int i){
Date currTime = addMM(getNowDate(),i);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
return format.format(currTime);
}
/**
* 获得某个时间的i分钟后(或前,用负数表示)的时间
* @param i
* @return
*/
public static String dateAddMM(Date date, int i){
Date currTime = addMM(date,i);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
return format.format(currTime);
}
/**
* @param date 获取给定日期的起初时间 XX-XX-XX 00:00:00
* @return date
*/
public static Date getBegin(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);
return calendar.getTime();
}
/**
* @param date 获取给定日期的结束时间 XX-XX-XX 23:59:59
* @return date
*/
public static Date getEnd(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime();
}
/**
* 计算两个日期之间的相差的天数. 计算方式:second - first
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差的天数
*/
public static int daysBetween( Date smdate,Date bdate ){
int result = 0;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try{
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
result = Integer.parseInt(String.valueOf(between_days));
}
catch(ParseException e){
log.error("日期转化异常",e);
}
catch(Exception e){
log.error("格式转化异常",e);
}
return result ;
}
/**
* 计算两个日期之间的相差的秒数. 计算方式:second - first
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差的秒数
*/
public static int secondsBetween( Date smdate, Date bdate ){
int result = 0;
try{
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_min=(time2-time1)/1000;
result = Integer.parseInt(String.valueOf(between_min));
}
catch(Exception e){
log.error("格式转化异常",e);
}
return result ;
}
/**
* 将时间戳转换为date
* @param seconds
* @return
*/
public static Date getTimestampToDate(long seconds ){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis( seconds );
return calendar.getTime() ;
}
/**
* 将date转时间戳
* @param date
* @return
*/
public static long getDateToTimestamp(Date date) {
long unixTimestamp = date.getTime() / 1000;
return unixTimestamp;
}
/**
* 判断两个日期是否在同一个月份
*
* @param date1
* @param date2
* @return
*/
@SuppressWarnings("deprecation")
public static boolean inSameMonth(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return false;
}
if (date1.getYear() == date2.getYear() && date1.getMonth() == date2.getMonth()) {
return true;
} else {
return false;
}
}
/**
* 根据日期取得星期几
*
* @param date
* @return
*/
public static String getWeek(Date date){
String[] weekArr = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
if(week_index < 0 || week_index > 6){
return "";
}
return weekArr[week_index];
}
2776

被折叠的 条评论
为什么被折叠?



