In this post:

  • java error Unparseable date
  • code example parsing:
    • Wed Nov 08 01:35:23 EET 2017

Parsing dates in java is a simple task if you know the input format. Sometimes you can end with errors like:

  • java.time.format.DateTimeParseException: Text 'Wed Nov 08 01:35:23 EET 2017' could not be parsed at index 0
  • java.text.ParseException: Unparseable date: "xWed Nov 08 01:35:23 EET 2017"

In order to parse those cases I use small method:

Date anyStringDateToDate(String anyDate) {
		Date date
		Boolean error = false

		// parse 2017-11-23T17:00:00-0700

		try {
			DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
			ZonedDateTime formatDateTime = ZonedDateTime.parse(facedate, formatter);
			date = Date.from(formatDateTime.toInstant())
		} catch (Exception eZ) {
			error = true
		}
		if (error) {
			// parse Wed Nov 08 01:35:23 EET 2017
			try {
				SimpleDateFormat formatter = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
				date = (Date) formatter.parse(facedate);
			} catch (Exception eS) {
			}
		}
		return date
	}

More on Java date conversion:
Java 9 how to convert LocalDateTime and ZonedDateTime