日期:2014-05-20  浏览次数:20693 次

一道简单的日期问题,只花你几分钟
取得指定日期所在月的第一天和最后一天  
比如:指定日期2007-8-8   去所在月的   第一天   2007-8-1  
                                                                    最后一天2007-8-31

------解决方案--------------------
LZ可以写一下自己写一下吗?这个不会太难的,不过你要注意想2月,之类的!!!
------解决方案--------------------
//取得 某年某月的天数
//月的数值为 0-11
int[] days = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
public int getDays(int year,int month)
{
if(month == 1){
if(year%4 == 0){
if(year%100 == 0){
return 28;
}else{
return 29;
}
}else{
return 28;
}
}
else{
return days[month];
}
}

// 给出一个日期 date ,取得该日期所在月的最后一天
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal_temp.clear();
cal_temp.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),getDays(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH)));
cal_temp.getTime() //就是 date 所在月的最后一天.
------解决方案--------------------
int year=2007;
int month=8;
java.util.Calendar c=java.util.Calendar.getInstance();
c.set(year,month-1,1);
java.util.Date first=c.getTime();
c.set(year,month,0);
java.util.Date last=c.getTime();
System.out.println(first.toLocaleString());
System.out.println(last.toLocaleString());
------解决方案--------------------
用Calendar
8-1很好做,直接set一下DATE为1就好了
8-31,看看add方法,直接对当前时间月份+1到9月,然后set到9月1日,然后add(Calendar.DATE,-1)//也就是减1天
------解决方案--------------------
学习~~
------解决方案--------------------
Calendar c = Calendar.getInstance();
c.set(c.YEAR, 2001);
c.set(c.MONTH, 0);
System.out.println(c.getActualMaximum(c.DAY_OF_MONTH)); //一个月的最大天数
System.out.println(c.getActualMinimum(c.DAY_OF_MONTH)); //一个月的最小天数
------解决方案--------------------
int year = 2007;
int month = 8;
Calendar c = new GregorianCalendar(year, month - 1, 1);
c.set(Calendar.DATE, c.getActualMinimum(Calendar.DATE));
System.out.printf( "%d年%d月的第一天是: %tF%n ", year, month, c);
c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
System.out.printf( "%d年%d月的最后一天是: %tF%n ", year, month, c);
------解决方案--------------------
可以参考一下我这个日历:
http://user.qzone.qq.com/197428/blog/3
------解决方案--------------------
回家了!
------解决方案--------------------
可以不用自己实现

我第一个想法也是第一天和减一天,觉得很实用~~
------解决方案--------------------
用Calendar类最容易解决这个问题
首先获得2007-8-8的月份,然后获取该月的第一天和最后一天,
用Calendar类不需要你去判断这个月是大月或者小月还是闰年2月
------解决方案--------------------
当前月的第一天好计算,不用说了
最后一天用下个月的第一天减去一天就是了
------解决方案--------------------