如何解决08,09会被系统认为是八进制问题,避免编译产生过大整数错误
写一个创建日期的函数,如果参数有效则返回格式为“YYYY-mm-dd”的字符串,否则返回 “无效的参数”。假设被4整除的是闰年,输入的年大于1900。Java: String makeDate(int year, int month, int day)
写很烂的程序!求路过的大神指教
import java.util.Date;
import java.text.SimpleDateFormat;
class NDate
{
int year;
int month;
int day;
public String setDateFormat(String str1){ //格式化日期方法
Date d=null;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //指定日期格式化形式
try
{
d=sdf.parse(str1); //将字符串变为date型数据,方便日期格式化
}
catch (Exception e)
{
e.printStackTrace();
}
return sdf.format(d).toString(); //将设置好的日期格式再变回为字符串返回
}
public String makeDate(int year,int month,int day){
String str=null; //声明str对象,保存返回值
String string=null;
String y=String.valueOf(year); //将整型数字转变为字符串,以便于验证所输入数据是否合理
String m=String.valueOf(month);
String d=String.valueOf(day);
if ((y.length()==4)&&(m.length()==2||m.length()==1)&&(d.length()==2||d.length()==1))
{ //判断输入参数的格式是否合理
if (month==01||month==03||month==05||month==07||month==8||month==10||month==12)
{
if (day>0&&day<=31)
{ //判断是否是31天的月份
string = year + "-" + month + "-" + day;
str=setDateFormat(string); //调用方法为日期格式化
}else{
str = "the param is invalid";
}
}
if (month==04||month==06||month==9||month==11)
{
if (day>0&&day<=30)
{ //判断是否是30天的月份
string = year + "-" + month + "-" + day;
str=setDateFormat(string);
}else{
str = "the param is invalid";
}
}
if (month==02)
{
if (year%4==0)
{ //闰年2月
if (day>0&&day<=29)
{ //判断是否符合闰年2月份条件
string = year + "-" + month + "-" + day;
str=setDateFormat(string);
}else{
str = "the param is invalid";
}
}else{ //平年2月
if (day>0&&day<=28)
{ //判断是否符合平年2月份条件
string = year + "-" + month + "-" + day;
str=setDateFormat(string);
}else{
str = "the param is invalid";
}
}
}
}else{
str = "the param is invalid";
}
return str;
}
}
public class MakeDateDemo03
{
public static void main(String args[])
{
NDate date=new NDate();
System.out.println(date.makeDate(2001,02,28));
}
}