Calendar now=Calendar.getInstance();
now.add(Calendar.DATE,-now.get(Calendar.DATE)+1);
now.add(Calendar.MONTH,1);
now.add(Calendar.DATE,-1);
=================================================
public static boolean isLeapYear(int year) {
if (year > 1582 && year % 4 == 0 &&
(year % 100 != 0 || (year % 100 == 0 && year % 400 == 0)))
return true;
else
return false;
}
public static int getMonthDays(int year, int month) {
int day = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 11:
day = 30;
break;
case 9:
if (year == 1582)
day = 20;
else
day = 30;
break;
case 2:
if (isLeapYear(year))
day = 29;
else
day = 28;
break;
default:
System.out.println("MyDateTime.getMonthDays: Month(" + month + ") is beyond : 1-12。");
break;
}
return day;
}//这个是你最终调用的函数
public static boolean isLastDay(int year, int month,int day)
{
int monthday = getMonthDays(year,month);
if (day > monthday)
{
System.out.println(year+"year"+month+"month"+day+"day is error date!!\n");
return false;
}
else if(day < monthday)
return false; return true;
}
now.add(Calendar.DATE,-now.get(Calendar.DATE)+1);
now.add(Calendar.MONTH,1);
now.add(Calendar.DATE,-1);
=================================================
public static boolean isLeapYear(int year) {
if (year > 1582 && year % 4 == 0 &&
(year % 100 != 0 || (year % 100 == 0 && year % 400 == 0)))
return true;
else
return false;
}
public static int getMonthDays(int year, int month) {
int day = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 4:
case 6:
case 11:
day = 30;
break;
case 9:
if (year == 1582)
day = 20;
else
day = 30;
break;
case 2:
if (isLeapYear(year))
day = 29;
else
day = 28;
break;
default:
System.out.println("MyDateTime.getMonthDays: Month(" + month + ") is beyond : 1-12。");
break;
}
return day;
}//这个是你最终调用的函数
public static boolean isLastDay(int year, int month,int day)
{
int monthday = getMonthDays(year,month);
if (day > monthday)
{
System.out.println(year+"year"+month+"month"+day+"day is error date!!\n");
return false;
}
else if(day < monthday)
return false; return true;
}
public String getLastMonthDay(int year,int month)
{
String result = "";
int lastmonth ;
int lastmonthday = 0;
try
{
lastmonth = month - 1;
if (lastmonth == 0)
{
lastmonth = 12;
year = year - 1;
}
switch(lastmonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
lastmonthday = 31;
break;
case 4:
case 6:
case 9:
case 11:
lastmonthday = 30;
break;
case 2:
if ((year % 4) == 0) lastmonthday = 29;
else lastmonthday = 28;
break;
}
DataCvt datacvt= new DataCvt(); //这是一个数据类型转换函数
//日期格式 "YYYY-MM-DD"
result = datacvt.intToString(year) + "-" + datacvt.intToString(lastmonth) + "-" + datacvt.intToString(lastmonthday);
}catch (Exception e)
{
return null;
}
return result;
}
看来和sikuan(冰糖★葫芦★头)的差不多,谢谢sikuan,让我最终决定用自己的函数。
具体用法请参考JDK1.4文档。但据我的经验,似乎Calendar类的这个函数有Bug,建议使用GregorianCalendar类的相对应的函数。
GregorianCalendar类就没有问题。