检查出生日期是否有效3个整数(mm / dd / yyyy)

时间:2016-01-11 10:07:13

标签: java date format

我制作了一个扫描仪,要求提供3个整数:月/日/年 对于每个整数,我检查这是否是有效条目(即月份< 12& month> 0)。 如果三个主菜有效,我会做:

$scope.$apply()

完整代码如下:

System.out.println(month + "-" + day + "-" + year);

我想从用户输入中提取日期,并检查该日期是否存在。 I.E并非每个月都有31个关于所涉及的年份。

2 个答案:

答案 0 :(得分:3)

使用语句检查某个日期是否有效可能会令人困惑。因此,您应该使用标准化方法。

如果您使用的是Java 8,那么您可以直接使用它:

public static boolean isDateValid(int year, int month, int day) {
    boolean dateIsValid = true;
    try {
        LocalDate.of(year, month, day);
    } catch (DateTimeException e) {
        dateIsValid = false;
    }
    return dateIsValid;
}

只需将intAnnee输入年份,将intMois输入月份,将intJour输入白天。

如果您使用的是早期版本的Java,请尝试以下操作:

final static String DATE_FORMAT = "dd-MM-yyyy";

public static boolean isDateValid(String date) 
{
        try {
            DateFormat df = new SimpleDateFormat(DATE_FORMAT);
            df.setLenient(false);
            df.parse(date);
            return true;
        } catch (ParseException e) {
            return false;
        }
}

答案 1 :(得分:3)

如果您想以这种方式进行,您必须改变问题的顺序:询问第一年,月份以及最后一天。通过这种方式,您可以在用户输入之前了解是否满足所有可能的条件(即:闰年的2月29日或31天的月份)。

另外,要最后检查日期是否正确,请使用例如SimpleDateFormat

let nav : UINavigationController = UINavigationController(rootViewController: self.storyboard!.instantiateViewControllerWithIdentifier("YourControllerName") as UIViewController)

self.navigationController?.presentViewController(nav, animated: true, completion: nil)

输出:

final static String DATE_FORMAT = "dd-MM-yyyy";

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int intJour;
    int intMois;
    int intAnnee;

    do {
        System.out.println("Veuillez entrer votre année de naissance :");
        intAnnee = sc.nextInt();
        sc.nextLine();
    } while (intAnnee < 0 || intAnnee > Calendar.getInstance().get(Calendar.YEAR));

    do {
        System.out.println("Veuillez entrer votre mois de naissance (de 01 à 12) :");
        intMois = sc.nextInt();
        sc.nextLine();
    } while (intMois < 0 || intMois > 12);

    do {
        System.out.println("Veuillez entrer votre jour de naissance (de 01 à 31) :");
        intJour = sc.nextInt();
        sc.nextLine();
    } while (!isDateValid(intAnnee, intMois, intJour));

    System.out.println("Confirmation de votre année de naissance: " + intJour + "-" + intMois + "-" + intAnnee);
    sc.close();
}

public static boolean isDateValid(int year, int month, int day) 
{
        try {
            DateFormat df = new SimpleDateFormat(DATE_FORMAT);
            df.setLenient(false);
            df.parse(day + "-" + month + "-" + year);
            return true;
        } catch (ParseException e) {
            return false;
        }
}