以mm / dd / yyyy格式读取并打印日期

时间:2014-01-28 05:12:49

标签: java

我是Java新手,我正在编写一个Java程序,它以mm / dd / yyyy格式读取日期,并以日,年格式打印出日期。该计划必须验证年份是在1900年至2014年之间(包括两个限制),并且日期和月份和年份是有效且相互一致的。如果输入不正确,程序必须显示相应的消息并终止。如果输入正确,则应以指定的格式打印输出。

例如: 输入日期 二零一三年四月三十零日 2013年4月30日

输入日期 1888年1月12日 年份应在1900年至2014年之间

我被困在如何限制年份和日期(如2月只有28),以及如何打印出来像上面的例子。我想对这个问题使用if else和switch语句。这是我到目前为止的代码,感谢您的帮助。

import java.util.Scanner;
public class Dates {
public static void main(String[] args) {
    int month, day, year;
    Scanner input = new Scanner(System.in);
    System.out.print("Please Enter Date in The Format mm/dd/yyyy : ");
    month = input.nextInt();
    day = input.nextInt();
    year = input.nextInt();
    String months = "January February March April May June July August "
            + "September October November December";
    String January = months.substring(0,7);
    String February = months.substring(8,16);
    String March = months.substring(17,22);
    String April = months.substring(23,28);
    String May = months.substring(29,32);
    String June = months.substring(33,37);
    String July = months.substring(38,42);
    String August = months.substring(43,49);
    String September = months.substring(50,59);
    String October = months.substring(60,67);
    String November = months.substring(68,76);
    String December = months.substring(77,85);
    if (month == 1) {
        months = January;
        day = 31;
    }
    else if (month == 2) {
        months = February;
        day = 28;
    }
    else if (month == 3) {
        months = March;
        day = 31;
    }
    else if (month == 4) {
        months = April;
        day = 30;
    }
    else if (month == 5) {
        months = May;
        day = 31;
    }
    else if (month == 6) {
        months = June;
        day = 30;
    }
    else if (month == 7) {
        months = July;
        day = 31;
    }
    else if (month == 8) {
        months = August;
        day = 31;
    }
    else if (month == 9) {
        months = September;
        day = 30;
    }
    else if (month == 10) {
        months = October;
        day = 31;
    }
    else if (month == 11) {
        months = November;
        day = 30;
    }
    else if (month == 12) {
        months = December;
        day = 31;
    }
    else {
        System.out.print("Invalid Month");
    }

    if (year >= 1900 || year <= 2014) {
        System.out.print(year);
    }
    else {
        System.out.println("Year should be between 1900 and 2014");
    }
    System.out.println(months + " " + day + ", " + year);
  }
 }

5 个答案:

答案 0 :(得分:8)

使用CalendarSimpleDateFormat分别在Java中处理和格式化日期。那是个不错的选择!除非你正在学习,否则请不要重新发明轮子。

请阅读CalendarSimpleDateFormat API

的文档

答案 1 :(得分:2)

您应该使用SimpleDateFormat,并且可以使用Calendar进行验证。

答案 2 :(得分:2)

您应该尝试使用课程CalendarGregorianCalendarSimpleDateFormat

答案 3 :(得分:0)

您应该使用 GregorianCalendar 进行格式化。

答案 4 :(得分:0)

在阅读另一个整数之前,你必须跳过'/'字符。

/*month = input.nextInt();
day = input.nextInt();
year = input.nextInt();*/
String dummy = input.nextLine();
month = Integer.parseInt(dummy.substring(0, 2));
day = Integer.parseInt(dummy.substring(3, 5));
year = Integer.parseInt(dummy.substring(6, 10));

你最后一行错了

System.out.println(months + " " + day + ", " + year);

对于闰年的东西,你应该访问维基。 http://en.wikipedia.org/wiki/Leap_year#Algorithm