我制作了一个扫描仪,要求提供3个整数:月/日/年 对于每个整数,我检查这是否是有效条目(即月份< 12& month> 0)。 如果三个主菜有效,我会做:
$scope.$apply()
完整代码如下:
System.out.println(month + "-" + day + "-" + year);
我想从用户输入中提取日期,并检查该日期是否存在。 I.E并非每个月都有31个关于所涉及的年份。
答案 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;
}
}