[英]How to validate String to Calendar input?
這是我第一次在stackoverflow上發帖。 我需要一些幫助來驗證從String到Calendar的用戶輸入。
例如,如果用戶輸入諸如“1”或“hi”之類的內容。 如何驗證並提示用戶輸入DDMMYYYY格式的錯誤消息(類似於04 02 2015)
System.out.print("Enter Date (DD MM YYYY): ");
input.nextLine();
String pickUpDate = input.nextLine();
Calendar pd = stringToCalendarConverter(pickUpDate);
public static Calendar stringToCalendarConverter(String stringToCal) //Converts String to Calendar
{
try
{
DateFormat df = new SimpleDateFormat("dd MM yyyy");
Date date = df.parse(stringToCal);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
return calendar;
}
catch (ParseException n)
{
return null;
}
}
調用DateFormat.setLenient(boolean)
,它說(部分) 使用嚴格的解析,輸入必須匹配此對象的格式。 就像是,
DateFormat df = new SimpleDateFormat("dd MM yyyy");
df.setLenient(false);
然后在循環中調用您的方法(在null
上重新提示日期)
Calendar pd = null;
while (pd == null) {
System.out.print("Enter Date (DD MM YYYY): ");
input.nextLine();
String pickUpDate = input.nextLine();
pd = stringToCalendarConverter(pickUpDate);
}
private static void dateConversion() {
Scanner input = new Scanner(System.in);
System.out.println("Enter Date (DD MM YYYY): ");
String pickUpDate = input.nextLine();
stringToCalendarConverter(pickUpDate);
}
public static void stringToCalendarConverter(String stringToCal) //Converts String to Calendar
{
Calendar calendar = null;
try {
DateFormat df = new SimpleDateFormat("dd MM yyyy");
df.setLenient(true);
Date date = df.parse(stringToCal);
calendar = new GregorianCalendar();
calendar.setTime(date);
} catch (ParseException n) { // If the user entered incorrect format, it will be catch here.
System.out.println("Invalid date format, pls try again.");
dateConversion(); // Prompt the user to enter valid date.
} finally{
if(calendar != null){
showActualDate(calendar);
}
}
}
private static void showActualDate(Calendar cal){
System.out.println("Entered ::::" +cal.getTime().toString());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.