Привет Я 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)
Просьба помочь мне с этим.
Почему вы ожидаете '12:46:21 PM', который обрабатывается форматом' MMM dd hh: mm a'? – Codebender
Есть 11 символов в '12:46:21 PM' - пробел. Это означает, что вы используете 'MMM dd hh: mm a' для синтаксического анализа, который является недопустимым. –
MMM dd hh: mm a для других форматов даты, любезно пройти через код. –