//取得 某年某月的天数 //月的数值为 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());
String time = "2008-2-1"; int day; int month; int year; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = sdf.parse(time); Calendar cal = Calendar.getInstance(); cal.setTime(date); year = cal.get(cal.YEAR); month = cal.get(cal.MONTH); GregorianCalendar obj = new GregorianCalendar(); if (obj.isLeapYear(year)) { day = DAY_OF_MONTH_LEAP_YEAR[month]; } else { day = DAY_OF_MONTH_NON_LEAP_YEAR[month]; } cal.set(year, month, day); Date last = cal.getTime(); System.out.println("LastDay:"+sdf.format(last));
//月的数值为 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 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());
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class data { /**
* @param args
*/
public static int[] DAY_OF_MONTH_LEAP_YEAR = { 31, 29, 31, 30, 31, 30, 31,
31, 30, 31, 30, 31 }; public static int[] DAY_OF_MONTH_NON_LEAP_YEAR = { 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31 }; public static void main(String[] args) {
String time = "2008-2-1";
int day;
int month;
int year;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(time);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
year = cal.get(cal.YEAR);
month = cal.get(cal.MONTH);
GregorianCalendar obj = new GregorianCalendar();
if (obj.isLeapYear(year)) {
day = DAY_OF_MONTH_LEAP_YEAR[month];
} else {
day = DAY_OF_MONTH_NON_LEAP_YEAR[month];
}
cal.set(year, month, day);
Date last = cal.getTime();
System.out.println("LastDay:"+sdf.format(last));
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} }}
8-1很好做,直接set一下DATE为1就好了
8-31,看看add方法,直接对当前时间月份+1到9月,然后set到9月1日,然后add(Calendar.DATE,-1)//也就是减1天
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 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
首先获得2007-8-8的月份,然后获取该月的第一天和最后一天,
用Calendar类不需要你去判断这个月是大月或者小月还是闰年2月
public int getActualMaximum(int field)考虑到给定的时间值和 getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange 和 getTimeZone 方法的当前值,返回此日历字段可能具有的最大值。例如,如果此实例的日期是 2004 年 2 月 1 日,则 DAY_OF_MONTH 字段的实际最大值是 29,因为 2004 年是闰年;如果此实例的日期是 2005 年 2 月 1 日,则最大值是 28。
import java.text.SimpleDateFormat;public class Test17 { /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
int year=2007;
int month=2;
DateFormat df=new SimpleDateFormat("yy-MM-dd");
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(df.format(first));
System.out.println(df.format(last)); }}
{
vitamins() ( ) 信誉:100 2007-8-14 10:32:41 得分: 0
LZ可以写一下自己写一下吗?这个不会太难的,不过你要注意想2月,之类的!!!
}这里面其实有很多人都是刚开始学习的..并不是所谓的"懒"!
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)); //一个月的最小天数
正解!!
现成的API不要,非要自已写,累!!!
lv810() 考虑到有闰年的情况没有?