2015-09-01 4 views
-2

Привет Я Calling ниже функции, чтобы найти время, прошедшее, до этой даты, он работает нормально для всех, но следующий ввод: 12:46:21 PM«java.text.ParseException: дата не поддается синтаксическому анализу» выброшены на время текст

public Long timeDifference(String weboutput) { 
    try { 
     Calendar calendar = GregorianCalendar.getInstance(); 
     Calendar today = new GregorianCalendar(); 
     Date inputTime; 
     if (weboutput.length() <= 10) { // for data fetched for current date. 
      DateFormat formatter = new SimpleDateFormat("hh:mm:ss a", Locale.US); 
      inputTime = formatter.parse(weboutput); 
      calendar.setTime(inputTime); 
      int hour = calendar.get(Calendar.HOUR); 
      int minute = calendar.get(Calendar.MINUTE); 
      int second = calendar.get(Calendar.SECOND); 
      today.setTime(new Date()); 
      today.set(Calendar.HOUR, hour); 
      today.set(Calendar.MINUTE, minute); 
      today.set(Calendar.SECOND, second); 
     } else { 
      if (weboutput.length() <= 15) { // for data for earlier date in same year or month. 
       DateFormat formatter = new SimpleDateFormat("MMM dd hh:mm a", Locale.US); 
       inputTime = formatter.parse(weboutput); 
       calendar.setTime(inputTime); 
       int hour = calendar.get(Calendar.HOUR); 
       int minute = calendar.get(Calendar.MINUTE); 
       int month = calendar.get(Calendar.MONTH); 
       int date = calendar.get(Calendar.DATE); 
       today.setTime(new Date()); 
       today.set(Calendar.HOUR, hour); 
       today.set(Calendar.MINUTE, minute); 
       today.set(Calendar.MONTH, month); 
       today.set(Calendar.DATE, date); 
      } else { // for data with different year. 
       DateFormat formatter = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a", Locale.US); 
       inputTime = formatter.parse(weboutput); 
       calendar.setTime(inputTime); 
       int hour = calendar.get(Calendar.HOUR); 
       int minute = calendar.get(Calendar.MINUTE); 
       int second = calendar.get(Calendar.SECOND); 
       int month = calendar.get(Calendar.MONTH); 
       int date = calendar.get(Calendar.DATE); 
       int year = calendar.get(Calendar.YEAR); 
       today.setTime(new Date()); 
       today.set(Calendar.HOUR, hour); 
       today.set(Calendar.MINUTE, minute); 
       today.set(Calendar.SECOND, second); 
       today.set(Calendar.YEAR, year); 
       today.set(Calendar.MONTH, month); 
       today.set(Calendar.DATE, date); 
      } 
     } 
     Date retrivedDate = today.getTime(); 
     Calendar cal = Calendar.getInstance(); 
     Date currentDate = cal.getTime(); 
     difference = currentDate.getTime() - retrivedDate.getTime(); 
     System.out.println(retrivedDate); 
     System.out.println(currentDate); 
     System.out.println(difference); 

    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return difference; 
} 

public boolean alarmValue(Long alarmTime) { 
    if (alarmTime <= 1800000) // change this value for Alarm duration, currently 30 min = 30* 60 s = 1800 * 1000 ms = 1800000 ms. 
     return false; 
    else 
     return true; 
} 

ошибка заключается в следующем:

java.text.ParseException: Unparseable date: "12:46:21 PM" 
    at java.text.DateFormat.parse(DateFormat.java:357) 
    at rcm.Selenium.Test.Calculations.timeDifference(Calculations.java:29) 
    at rcm.Selenium.Test.RcmSeleniumTest.main(RcmSeleniumTest.java:89) 
    Exception in thread "main" java.lang.NullPointerException 
    at rcm.Selenium.Test.Calculations.alarmValue(Calculations.java:76) 
    at rcm.Selenium.Test.RcmSeleniumTest.main(RcmSeleniumTest.java:90) 

Просьба помочь мне с этим.

+2

Почему вы ожидаете '12:46:21 PM', который обрабатывается форматом' MMM dd hh: mm a'? – Codebender

+0

Есть 11 символов в '12:46:21 PM' - пробел. Это означает, что вы используете 'MMM dd hh: mm a' для синтаксического анализа, который является недопустимым. –

+0

MMM dd hh: mm a для других форматов даты, любезно пройти через код. –

ответ

1

"12:46:21 PM" имеет 11 цифр и, следовательно, не передает ваш первый тест (который для <= 10 цифр) для формата "hh:mm:ss a".

+0

Привет, спасибо за выделение, был пропущен тот. –

+0

@PranavNath теперь у вас есть эта работа, я рекомендую опубликовать ее на [codereview] (http://codereview.stackexchange.com/help/on-topic) для обратной связи. –

Смежные вопросы