声明:内容根据网络整理而成
1
先来给最普通版的
String yesterday = new java.text.SimpleDateFormat("yyyy-MM-dd").format(System.currentTimeMillis() - 24 * 60 * 60 * 1000);
2
求指定日期之后 or 之前 n 天的日期
public String getDate(Date date, int days){
String str = "";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
// Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(cal.DAY_OF_MONTH, days);
str = df.format(cal.getTime());
return str;
}
3
求两日期之间的天数
解法一:
public long getDiffDays(Date beginDate, Date endDate){
return (endDate.getTime() - beginDate.getTime())/(24*60*60*1000);
}
解法二:
public int daysOfTwoDate(Date beginDate, Date endDate){
int days = 0;
Calendar beginCal = new GregorianCalendar();
Calendar endCal = new GregorianCalendar();
beginCal.setTime(beginDate);
endCal.setTime(endDate);
while(beginCal.before(endCal)){
beginCal.add(Calendar.DAY_OF_MONTH, 1);
days++;
}
return days;
}
4 求两个日期之间的月份数
这个看似简单,其实也不好对付
/**
* 计算两个日期的月份之差
* @param beginDate
* @param endDate
* @return
*/
public int getDiffMonth(Date beginDate, Date endDate){
int months = 0;
Calendar beginCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
beginCalendar.setTime(beginDate);
endCalendar.setTime(endDate);
months = (endCalendar.get(endCalendar.YEAR) - beginCalendar.get(beginCalendar.YEAR)) * 12
+ (endCalendar.get(endCalendar.MONTH) - beginCalendar.get(beginCalendar.MONTH));
return months;
}
5 其他
用到的api
字符串转日期,例:
Date begin = new SimpleDateFormat("yyyy-MM-dd").parse("2012-10-01");
Calendar 常用属性
Calendar.YEAR
Calendar.MONTH
Calendar.DATE
Calendar.DAY_OF_YEAR 当前年中的天数
Calendar.DAY_OF_MONTH 一个月中的某天
Calendar.DAY_OF_WEEK 一个星期中的某天
Calendar.getInstance()
使用默认时区和语言环境获得一个日历。
set(int field, int value)
将给定的日历字段设置为给定值
Calendar.setTime(Date date);
使用给定的 Date 设置此 Calendar 的时间。
int get(int field)
返回给定日历字段的值。
Calendar.getTime();
Date getTime()
返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。