java 根据日期获取当月所有日期,和 上个月所有日期

java 语言

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Main {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

public static void main(String args[]) {
Date d = new Date();
// 月初
System.out.println("月初" + sdf.format(getMonthStart(d)));
// 月末
System.out.println("月末" + sdf.format(getMonthEnd(d)));

Date date = getMonthStart(d);
Date monthEnd = getMonthEnd(d);
while (!date.after(monthEnd)) {
System.out.println(sdf.format(date));
date = getNext(date);
}

}

private static Date getMonthStart(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int index = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DATE, (1 - index));
return calendar.getTime();
}

private static Date getMonthEnd(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);
int index = calendar.get(Calendar.DAY_OF_MONTH);
calendar.add(Calendar.DATE, (-index));
return calendar.getTime();
}

private static Date getNext(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, 1);
return calendar.getTime();
}

}

 


这是一个月的 你改改就能写出上个月的了吧

追问

这个只是获取当月的日期 ,我要的是 根据日期获取上月、和本月的所有日期

追答

把getMonthStart 修改为

 private static Date getMonthStart(Date date) {
      Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         calendar.add(Calendar.MONTH, -1);
         int index = calendar.get(Calendar.DAY_OF_MONTH);
         calendar.add(Calendar.DATE, (1 - index));
         return calendar.getTime();
    }

追问

加q可以么 121686578

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-15
看了他们的回答答案应该已经有了。

我想问你, 给你一个日期。你能获得该月的最后一天吗?追问

可以的 。

第2个回答  2014-04-15
是不是要获取类似于日历中的那种所有日期集合
第3个回答  2014-04-15
不明白你的意思

按我理解的 知道月份 不就知道上个月和下个月是几天了追问

比如(2014-04-15)这个日期获取 3 月份 和 4 月份 所有日期。

追答

你是要简单的方法 还是??

追问

只要能获取出来就行。

追答

看楼下的吧啊 我的想法是 用字符串 截