java日期 计算前后日期

日期加减  简单方法

String time= "";

 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");

Calendar cal = Calendar.getInstance();

Date date = new Date();

//按时

cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, -i);//-代表前面 i代表当前时间的前面或后面  i 个小时

time= sdf.format(cal.getTime());  得到当前日期的  前面 或 后面 i 个小时

 

 

//按天

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, -i);
time= sdf.format(cal.getTime());

 

 

//按周

cal.add(Calendar.WEEK_OF_MONTH, -i);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

time= sdf.format(cal.getTime());

//按月

cal.setTime(date);

cal.add(Calendar.MONTH, -i);

time= sdf.format(cal.getTime());

 

 

 

//引用高人的  未测试 应该可以用

private static int weeks = 0;
   
    // 获得当前日期与本周一相差的天数
    private int getMondayPlus() {
        Calendar cd = Calendar.getInstance();
        // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
        if (dayOfWeek == 1) {
            return -6;
        } else {
            return 2 - dayOfWeek;
        }
    }

    // 获得上周星期一的日期
    public String getPreviousMonday() {
        weeks--;
        int mondayPlus = this.getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    // 获得本周星期一的日期
    public String getCurrentMonday() {
        weeks = 0;
        int mondayPlus = this.getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    // 获得下周星期一的日期
    public String getNextMonday() {
        weeks++;
        int mondayPlus = this.getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

    // 获得相应周的周日的日期
    public String getSunday() {
        int mondayPlus = this.getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
        Date monday = currentDate.getTime();
        DateFormat df = DateFormat.getDateInstance();
        String preMonday = df.format(monday);
        return preMonday;
    }

 

 //获取当前日期  是在一年中的第几周
public static String getWEEK_OF_YEAR(Date myDate){
  Calendar calendar = Calendar.getInstance();
  calendar.setFirstDayOfWeek(Calendar.MONDAY);
  calendar.setTime(myDate);
  return calendar.get(Calendar.WEEK_OF_YEAR)+"";
}

//根据周得到这周的第一天 日期
 public static String calFirstDayOfTheYear(int year,int week){
   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Calendar calFirstDayOfTheYear = new GregorianCalendar(year,Calendar.JANUARY, 1);
 calFirstDayOfTheYear.add(Calendar.DATE, 7 * (week-1));
 int dayOfWeek = calFirstDayOfTheYear.get(Calendar.DAY_OF_WEEK);
 Calendar calFirstDayInWeek = (Calendar)calFirstDayOfTheYear.clone();
 calFirstDayInWeek.add(Calendar.DATE, calFirstDayOfTheYear.getActualMinimum(Calendar.DAY_OF_WEEK) - dayOfWeek + 1);
     Date firstDayInWeek = calFirstDayInWeek.getTime();
     return df.format(firstDayInWeek);
}
//根据周得到这周的最后一天 日期
public static String calFirstDayOfTheYear1(int year,int week){
   SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  Calendar calFirstDayOfTheYear = new GregorianCalendar(year,Calendar.JANUARY, 1);
 calFirstDayOfTheYear.add(Calendar.DATE, 7 * (week-1));
 int dayOfWeek = calFirstDayOfTheYear.get(Calendar.DAY_OF_WEEK);
 Calendar calLastDayInWeek = (Calendar)calFirstDayOfTheYear.clone();
     calLastDayInWeek.add(Calendar.DATE,calFirstDayOfTheYear.getActualMaximum(Calendar.DAY_OF_WEEK) - dayOfWeek + 1);
     Date lastDayInWeek = calLastDayInWeek.getTime();
     return df.format(lastDayInWeek);
 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值