java项目中经常需要用到到当前日期的前若干天、后若干天、前几小时、后几小时的时间,现总结如下
获取前/后(月、天、小时)时间
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
*
* 给一个日期获得其他的日期
*
* @param farmat
* 返回日期格式
*
* @param date
* 传入的初始日期
*
* @param num
* 想要得到的哪天(正数:代表后num天,负数:代表前num天)
*
* @return 格式字符串的日期
*/
public static String getAnotherDay(String farmat, String date, Integer num) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(farmat);
Date date_ = sdf.parse(date);// 将字符串转化为时间格式
Calendar calendar = Calendar.getInstance(); // 得到日历
calendar.setTime(date_);// 把开始日期赋给日历
calendar.add(Calendar.DAY_OF_MONTH, num); // 设置为num天
//calendar.add(Calendar.HOUR_OF_DAY, num); // 设置为num小时
//calendar.add(Calendar.MONTH, num); // 设置为num月
Date resultDate = calendar.getTime(); // 得到时间
return sdf.format(resultDate);
}
另外总结其他几种获取日期方式:
获取上月:
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
String time = format.format(c.getTime());
得到一个月最后一天日期(31/30/29/28)
int MaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);
//按你的要求设置时间
c.set( c.get(Calendar.YEAR), c.get(Calendar.MONTH), MaxDay, 23, 59, 59);
//按格式输出
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String gtime = sdf.format(c.getTime()); //上月最后一天
获取本日日期
/**
* 获取本日日期
* @return
*/
public static String getToDay(){
Calendar c = Calendar.getInstance();
String time = getTime(c);
System.out.println(time);
return time;
}
获取本周一日期
/**
* 获取本周一日期
* @return
*/
public static String getWeekA(){
Calendar cal =Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
// System.out.println(cal.getTime());
String time = getTime(cal)+" 00:00:00";
System.out.println(time);
return time;
}
获取本周日日期
/**
* 获取本周日日期
* @return
*/
public static String getWeekB(){
Calendar cal =Calendar.getInstance();
// System.out.println(cal.getTime());
//这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
// System.out.println(cal.getTime());
//增加一个星期,才是我们中国人理解的本周日的日期
cal.add(Calendar.WEEK_OF_YEAR, 1);
// System.out.println(cal.getTime()); //本周日
String time = getTime(cal)+" 23:59:59";
System.out.println(time);
return time;
}
获取本月日期
/**
* 获取本月日期
* @return
*/
public static String getMonth(){
Calendar c = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
String time = format.format(c.getTime());
System.out.println(time);
return time;
}