在项目开发中经常会遇到一些处理日期的操作,总结了一些java 日期加减 ,代码如下
//得到在当前日期之后的未来 的时间;
**方法一
public Date daysDate1(Date dateTime/*待处理的日期*/,int n/*加减天数*/){//日期格式
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd EE hh:mm:ss");
//处理天数
//long nDay=(dateTime+(n*24*60*60*1000));
System.out.prinln(df.format(new Date(dateTime - n * 24 * 60 * 60 * 1000)));
}
**方法二
public Date daysDate2(Date dateTime/*待处理的日期*/,int n/*加减天数*/){
//日期格式
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd EE hh:mm:ss");
java.util.Calendar calstart = java.util.Calendar.getInstance();
calstart.setTime(dateTime);
calstart.add(java.util.Calendar.DAY_OF_WEEK, n);
System.out.println(dd.format(calstart.getTime()));
}
其他:
有些需求中需要得到 两个日期之间的所有天数的具体日期;
public static List<String> getDates(Date startDate, Date endDate) {
java.util.Calendar calstart = java.util.Calendar.getInstance();
java.util.Calendar calend = java.util.Calendar.getInstance();
calstart.setTime(startDate);
calend.setTime(endDate);
// 设置时间为0时
calstart.set(java.util.Calendar.HOUR_OF_DAY, 0);
calstart.set(java.util.Calendar.MINUTE, 0);
calstart.set(java.util.Calendar.SECOND, 0);
calend.set(java.util.Calendar.HOUR_OF_DAY, 0);
calend.set(java.util.Calendar.MINUTE, 0);
calend.set(java.util.Calendar.SECOND, 0);
long start = calstart.getTimeInMillis();
long end = calend.getTimeInMillis();
List<String> date = new ArrayList<String>();
SimpleDateFormat df=new SimpleDateFormat("dd");
do {
Date time=new Date(start);
date.add(df.format(time));
} while ((start += 1000 * 60 * 60 * 24) <= end);
return date; //返回天数 eg: 01、02、03
}
贴下 API中的 Calendar:
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
该类还为实现包范围外的具体日历系统提供了其他字段和方法。这些字段和方法被定义为 protected。
与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();