java程序 判断输入年月日正确并输出下一日日期 麻烦大虾给我完整程序~想参考学习一下~万分感谢!!!

如题所述

import java.util.Date;
import java.util.Scanner;
import java.util.regex.Pattern;

enum DatePart{yy,mm,dd};

public class Test19 {
public static void main(String[] args) {
Date d;
String str;
String[] temp = new String[3];
String reg;
int year, month, day;
Scanner scan = new Scanner(System.in);
reg = "\\d{4}-\\d{1,2}-\\d{1,2}"; //月份或日期可以是1位或2位

System.out.print("请输入一个日期(yyyy-mm-dd):");
str = scan.next(Pattern.compile(reg));

d = toDate(str);
if(d != null){
System.out.println(d.toLocaleString());
}
else{
System.out.println(str + "是一个非法日期");
}

System.out.println(d.toLocaleString() + " 的下一个日期是 " + dateAdd(DatePart.dd, d, 1).toLocaleString());
}

//判断一个年份是否是闰年
public static boolean isLeapYear(int year){
return (year%400==0 || (year%4==0 && year%100!=0));
}

//将一个字符串转换为日期,若非法,返回null
public static Date toDate(String source){
Date d;
try{
String[] temp = new String[3];
int year, month, day;
boolean flag = true;

temp = source.split("-");
year = Integer.parseInt(temp[0]);
month = Integer.parseInt(temp[1]);
day = Integer.parseInt(temp[2]);

if(month < 1 || month > 12 || day < 1 || day > 31){
return null;
}

switch(month){
case 4:
case 6:
case 9:
case 11:
if(day > 30){
flag = false;
}
break;
case 2:
if(year%400==0 || (year%4==0 && year%100!=0)){
if(day > 29){
flag = false;
}
}
else{
if(day > 28){
flag = false;
}
}
break;
}

if(flag == false){
return null;
}
d = new Date(year-1900, month-1, day);
return d;
}
catch(Exception e){
return null;
}
}

//返回日期d增加n个part单位的值
public static Date dateAdd(DatePart part, Date d, int n){
int year, month, day;
year = d.getYear();
month = d.getMonth();
day = d.getDate();

switch(part){
case yy:
d.setYear(year+n);
break;
case mm:
d.setMonth(month+n);
break;
case dd:
d.setDate(day+n);
break;
}
return d;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-21
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class NextDay {

public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入日期,格式为yyyy-MM-dd:");
try {
SimpleDateFormat sformat = new SimpleDateFormat("yyyy-MM-dd");
//取控制台输入
String sDate = reader.readLine();
//解析日期
Date date = sformat.parse(sDate);
Calendar c = Calendar.getInstance();
c.setTime(date);
//用Calendar工具类给日期加一天
c.add(Calendar.DATE, 1);
System.out.println("下一天为:" + sformat.format(c.getTime()));
} catch (IOException e) {
e.printStackTrace();
System.err.println("输入日期异常");
} catch (ParseException e) {
e.printStackTrace();
System.err.println("不能解析的日期格式");
}
}
}本回答被提问者和网友采纳
相似回答