最近的项目老用到不同的时间操作方法,看了半天文档,整理了一个基本工具类,应该能满足一般开发的需要了,罗列如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CommonTool {
public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
public static SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
/**
* 得到返回指定日期是星期几(1为周日;2为周一;依次类推)
* @param date
* @return
*/
public static int getDateWeekDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.get(Calendar.DAY_OF_WEEK);
}
/**
* 获取当前自然年后的amount年的第一天的开始时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficYearStart(int amount){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, amount);
cal.set(Calendar.DAY_OF_YEAR, 1);
return getStartDate(cal.getTime());
}
/**
* 获取当前自然年后的amount年的最后一天的终止时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficYearEnd(int amount){
Date temp = getStartDate(getSpecficYearStart(amount + 1));
Calendar cal = Calendar.getInstance();
cal.setTime(temp);
cal.add(Calendar.DAY_OF_YEAR, -1);
return getFinallyDate(cal.getTime());
}
/**
* 返回日期所在年份中的天数(1--366)
* @param date
* @return
*/
public static int getYearDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, 1);
cal.set(Calendar.DAY_OF_YEAR, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
SimpleDateFormat format1 = new SimpleDateFormat("D");
String aa = format1.format(cal.getTime());
return Integer.parseInt(aa);
}
/**
* 获取当前自然月后的amount月的第一天的开始时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficMonthStart(int amount){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, amount);
cal.set(Calendar.DAY_OF_MONTH, 1);
return getStartDate(cal.getTime());
}
/**
* 获取当前自然月后的amount月的最后一天的终止时间
* @param amount 可正、可负
* @return
*/
public static Date getSpecficMonthEnd(int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(getSpecficMonthStart(amount + 1));
cal.add(Calendar.DAY_OF_YEAR, -1);
return getFinallyDate(cal.getTime());
}
/**
* 返回日期所在月份中的天数(1--31)
* @param date
* @return
*/
public static int getMonthDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_YEAR, -1);
SimpleDateFormat format1 = new SimpleDateFormat("d");
String aa = format1.format(cal.getTime());
return Integer.parseInt(aa);
}
/**
* 获取当前自然周后的第amount周的开始时间(这里星期一为一周的开始)
* @param amount 可正、可负
* @return
*/
public static Date getSpecficWeekStart(int amount){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); /*设置一周的第一天为星期一*/
cal.add(Calendar.WEEK_OF_MONTH, amount);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
return getStartDate(cal.getTime());
}
/**
* 获取当前自然周后的第amount周的最后时间(这里星期日为一周的最后一天)
* @param amount 可正、可负
* @return
*/
public static Date getSpecficWeekEnd(int amount){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY); /*设置一周的第一天为星期一*/
cal.add(Calendar.WEEK_OF_MONTH, amount);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return getFinallyDate(cal.getTime());
}
/**
* 得到指定日期的一天的的最后时刻23:59:59
* @param date
* @return
*/
public static Date getFinallyDate(Date date){
String temp = format.format(date);
temp += " 23:59:59";
try{
return format1.parse(temp);
}
catch(ParseException e){
return null;
}
}
/**
* 得到指定日期的一天的开始时刻00:00:00
* @param date
* @return
*/
public static Date getStartDate(Date date){
String temp = format.format(date);
temp += " 00:00:00";
try{
return format1.parse(temp);
}
catch(Exception e){
CPDLogDebug.printError(e, null);
return null;
}
}
/**
* 得到当前时间后的指定天数的时间
* @param amount 天数(可正、可负)
* @return
*/
public static Date getSpecficDate(int amount){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, amount);
return cal.getTime();
}
/**
* 根据参照日期,得到其周边天数的日期
* @param date
* @param amount
* @return
*/
public static Date getSpecficDate(Date date, int amount){
if(date == null) return getSpecficDate(amount);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR, amount);
return cal.getTime();
}
}