java 怎么获取一个月的日期

比如,给出2013年10月,怎么获取获取2013年10月1日到2013年10月31日的日历信息

/**
 * 
 * 获取指定月份的日历信息
 * 
 * @param year
 *            年
 * @param month
 *            月
 * @return
 */
public static int[] getMonthCalendar(int year, int month) {

Calendar cl = Calendar.getInstance();
cl.set(year, month, 1);
int firstDay = cl.getMinimum(Calendar.DAY_OF_MONTH);
int lastDay = cl.getMaximum(Calendar.DAY_OF_MONTH);

int[] day = new int[lastDay];

for (int i = 0; i < lastDay; i++) {
day[i] =  i + firstDay;
}

return day;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-10
Calendar cal = Calendar.getInstance();
// 不加下面2行,就是取当前时间前一个月的第一天及最后一天
cal.set(Calendar.YEAR,2012) ;
cal.set(Calendar.MONTH, 6);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
Date lastDate = cal.getTime();//当前月最后一天

cal.set(Calendar.DAY_OF_MONTH, 1);
Date firstDate = cal.getTime();//当前月第一天
第2个回答  2013-11-28
//month为两位,例如01
public static Date[] getDates(String year, String month) {
Calendar cal = Calendar.getInstance();
//1.跳转到本月第一天

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
sdf.parse(year+"-"+month);
cal.setTime(date);
int maxDate = cal.getMaximum(Calendar.DAY_OF_MONTH);//获取本月日期值
}追问

你能把代码全写出来吗?谢谢

追答

public static Date[] getDates(String year, String month) {
int maxDate = 0;
Date first = null;
try {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
first = sdf.parse(year + month);
cal.setTime(first);
maxDate = cal.getMaximum(Calendar.DAY_OF_MONTH);
} catch (Exception e) {
e.printStackTrace();
}
Date[] dates = new Date[maxDate];
for (int i = 1; i <= maxDate; i++) {
dates[i - 1] = new Date(first.getTime());
first.setDate(first.getDate() + 1);
}
return dates;
}

public static void main(String[] args) {
getDates("2013", "05");
}

追问

为什么都是31个日期?像9月份,只有30天,可是结果连10月1日也打印出来
晕,获取一个月的天数用getActualMaximum(Calendar.DAY_OF_MONTH)好不好

本回答被提问者采纳
第3个回答  2013-11-28
/**
* 获取前一个月的日期
*
* @return 前一个月的日期
*/
public static String getTodayBeforeMonth() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date currentTime = new Date();// 得到当前系统时间
long now = currentTime.getTime();// 返回自 1970 年 1 月 1 日 00:00:00 GMT
// 以来此Date 对象表示毫秒数
currentTime = new Date(now - 86400000 * 24);
long now1 = currentTime.getTime();
currentTime = new Date(now1 - 86400000 * 6);
String current = formatter.format(currentTime);
return current;
}

public static void main(String[] args) {
System.out.println(DateUtil.getTodayBeforeMonth());
}追问

我好像没有DateUtil这东西啊,能上传个吗?

追答

这就是个类名而已~

你需要的是getdate这个方法

相似回答