簡體   English   中英

如何驗證字符串到日歷輸入?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM