java获取今日、昨日、上月(今日)、上月第一天等常用方法
public class DateUtils {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("今天日期:"+sdf.format(new Date()));
System.out.println("昨天日期:"+getYesterdayYmd());
System.out.println("上月时间:"+getBeforeMonth());
System.out.println("上个月第一天:"+ getBeforeFirstMonthdate());
System.out.println("上个月最后一天:"+getBeforeLastMonthdate());
System.out.println("上周的开始时间:"+getBeginDayOfLastWeek() );
System.out.println("上周的结束时间:"+getEndDayOfLastWeek());
}
// 获取上周的开始时间
public static String getBeginDayOfLastWeek() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
if (dayofweek == 1) {
dayofweek += 7;
}
cal.add(Calendar.DATE, 2 - dayofweek - 7);
return sdf.format(cal.getTime());
}
// 获取上周的结束时间
public static String getEndDayOfLastWeek() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
try {
cal.setTime(sdf.parse(getBeginDayOfLastWeek()) );
}catch (ParseException parseException){
}
cal.add(Calendar.DAY_OF_WEEK, 6);
Date weekEndSta = cal.getTime();
return sdf.format(weekEndSta) ;
}
//4、获取上个月的第一天
public static String getBeforeFirstMonthdate(){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return format.format(calendar.getTime());
}
//5、获取上个月的最后一天
public static String getBeforeLastMonthdate(){
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
int month=calendar.get(Calendar.MONTH);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return sf.format(calendar.getTime());
}
//获取昨天日期 年月日
public static Map<String,String> getYesterdayYmd() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
cal.add(Calendar.DAY_OF_MONTH, -1);
Map<String,String> map=new HashMap();
if(isLastDayOfMonth(cal.getTime())){
//是当月最后一天
map.put("isFor","0");
map.put("date",sdf.format(cal.getTime()));
}else{
//不是当月最后一天
map.put("isFor","1");
map.put("date",sdf.format(cal.getTime()));
}
return map;
}
/**
* 判断给定日期是否是当月的最后一天
* @param date
* @return
*/
public static boolean isLastDayOfMonth(Date date) {
//1、创建日历类
Calendar calendar = Calendar.getInstance();
//2、设置当前传递的时间,不设就是当前系统日期
calendar.setTime(date);
//3、data的日期是N,那么N+1【假设当月是30天,30+1=31,如果当月只有30天,那么最终结果为1,也就是下月的1号】
calendar.set(Calendar.DATE, (calendar.get(Calendar.DATE) + 1));
//4、判断是否是当月最后一天【1==1那么就表明当天是当月的最后一天返回true】
if (calendar.get(Calendar.DAY_OF_MONTH) == 1) {
return true;
}else{
return false;
}
}
/**
* 获取上个月日期 yyyy-MM-dd 格式
* @return
*/
public static String getBeforeMonth(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//定义日期显示格式
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
// 上个月时间
String before = sdf.format(c.getTime());
return before;
}
}