A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

**java 获取某月、某周的第一天、最后一天**

```java
/**
* 日期格式化
*/
public static String format(Calendar c, String pattern) {
    Calendar calendar = null;
    if (c != null) {
        calendar = c;
    } else {
        calendar = Calendar.getInstance();
    }
    if (pattern == null || pattern.equals("")) {
        pattern = DATETIME_FORMAT;
    }
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    return sdf.format(calendar.getTime());
}
```

1.  获取某月的第一天/最后一天

```java
/**
* 获得某月第一天
* @param count (0:本月,-1:上一个月,1:下一个月)
* @return        yyyy-MM-dd
*/
public static String getNextMonthFirst(int count) {
     Calendar strDate = Calendar.getInstance();
     int day = getDate(strDate);
     strDate.add(Calendar.DATE,-(day-1));
     strDate.add(Calendar.MONTH,count);
     return format(strDate,"yyyy-MM-dd");
}
/**
* 获得下月最后一天
* @param count (0:本月,-1:上一个月,1:下一个月)
* @return        yyyy-MM-dd
*/
public static String getNextMonthEnd(int count) {
     Calendar strDate = Calendar.getInstance();
     int day = getDate(strDate);
     strDate.add(Calendar.DATE,-day);
     strDate.add(Calendar.MONTH,count+1);
     return format(strDate,"yyyy-MM-dd");
}
```

测试:
外汇代理https://www.fx61.com/ib.html

```java
System.out.println("当前时间点是:"+DateUtil.getDataFormat(new Date()));
System.out.println("上月第一天是:"+DateUtil.getNextMonthFirst(-1));
System.out.println("本月第一天是:"+DateUtil.getNextMonthFirst(0));
System.out.println("下月第一天是:"+DateUtil.getNextMonthFirst(1));
System.out.println("上月最后一天是:"+DateUtil.getNextMonthEnd(-1));
System.out.println("本月最后一天是:"+DateUtil.getNextMonthEnd(0));
System.out.println("下月最后一天是:"+DateUtil.getNextMonthEnd(1));
```

结果展示:

```
当前时间点是:2020-08-27 19:27:52
上月第一天是:2020-07-01
本月第一天是:2020-08-01
下月第一天是:2020-09-01
上月最后一天是:2020-07-31
本月最后一天是:2020-08-31
下月最后一天是:2020-09-30
```

  
2\. 获取某周的第一天/最后一天

```java
/**
* 获得某周星期一的日期
* @param count (0:本月,-1:上一个月,1:下一个月)
* @return        yyyy-MM-dd
*/
public static String getNextMonday(int count) {
    Calendar strDate = Calendar.getInstance();
    int day = getDay(strDate);
    strDate.add(Calendar.DATE,-(day-2));
    strDate.add(Calendar.WEEK_OF_YEAR,count);
    return format(strDate,"yyyy-MM-dd");
}

/**
* 获得某周星期日的日期
* @param count (0:本月,-1:上一个月,1:下一个月)
* @return        yyyy-MM-dd
*/
public static String getNextSunday(int count) {
    Calendar strDate = Calendar.getInstance();
    int day = getDay(strDate);
    strDate.add(Calendar.DATE,8-day);
    strDate.add(Calendar.WEEK_OF_YEAR,count);
    return format(strDate,"yyyy-MM-dd");
}
```

测试:

```java
System.out.println("当前时间点是:"+DateUtil.getDataFormat(new Date()));
System.out.println("上周第一天是:"+DateUtil.getNextMonday(-1));
System.out.println("本周第一天是:"+DateUtil.getNextMonday(0));
System.out.println("下周第一天是:"+DateUtil.getNextMonday(1));
System.out.println("上周最后一天是:"+DateUtil.getNextSunday(-1));
System.out.println("本周最后一天是:"+DateUtil.getNextSunday(0));
System.out.println("下周最后一天是:"+DateUtil.getNextSunday(1));
```

结果展示:

```
当前时间点是:2020-08-27 19:32:58
上周第一天是:2020-08-17
本周第一天是:2020-08-24
下周第一天是:2020-08-31
上周最后一天是:2020-08-23
本周最后一天是:2020-08-30
下周最后一天是:2020-09-06
```

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马