结合这两天公司的需求整理的几个时间工具类方法:具体代码如下
/**
* 获取给定日期N天后的日期
* @param dateTime 给定的日期
* @param days 往后推算的天数 N
* @return
*/
public static String getDateAfterNDays(String dateTime, int days) {
Calendar calendar = Calendar.getInstance();
String[] dateTimeArray = dateTime.split("-");
int year = Integer.parseInt(dateTimeArray[0]);
int month = Integer.parseInt(dateTimeArray[1]);
int day = Integer.parseInt(dateTimeArray[2]);
calendar.set(year, month - 1, day);
long time = calendar.getTimeInMillis();// 给定时间与1970年1月1日的00:00:00.000的差,以毫秒显示
calendar.setTimeInMillis(time + days * 1000 * 60 * 60 * 24);//用给定的long值设置此Calendar的当前时间值
return calendar.get(Calendar.YEAR)// 计算后的时间——年
+ "-" + (calendar.get(Calendar.MONTH) + 1)// 计算后的时间——月
+ "-" + calendar.get(Calendar.DAY_OF_MONTH)// 计算后的时间——日
;
}
/**
* 根据给定日期获取其是周几
* @param date
* @return
*/
public static int getWeek(Date date){
int[] weeks = {7,1,2,3,4,5,6};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
if(week_index<0){
week_index = 0;
}
return weeks[week_index];
}
/**
* 根据已知的一个固定日期-->获取给定周几的日期
* @param date //给定日期
* @param day //周几
*/
public static String getWeekDateByDate(String date, int day){
String dDate = "---";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date2 = format.parse(date);
int weekDay = getWeek(date2);
System.out.println("给定日期是周:"+weekDay);
//计算两数之间的差
int dValue = day-weekDay;
dDate = getDateAfterNDays(format.format(date2),dValue);
} catch (ParseException e) {
e.printStackTrace();
}
return dDate;
}
//main方法测试
public static void main(String[] args) {
System.out.println(new DateTest().getDateAfterNDays("2017-07-26", -3));//输出2012-5-17
System.out.println(getWeek(new Date()));
System.out.println(Test("2017-3-1",2));
}
输出结果如下图