import java.time.DateTimeException;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.stream.Stream;


public class Main {
	public static void main(String[] args) {
		Stream.of(
				"So., 18 Juli 2021 15:24:00 +0200",
				"ven., 16 avr. 2021 15:24:00 +0200",
				"vr, 16 apr. 2021 15:24:00 +0200",
				"vr, 16 07 2021 15:24:00 +0200"
		).forEach(s -> {
			Stream.of(
					Locale.GERMANY,
					Locale.FRANCE,
					new Locale("nl", "NL")
			).forEach( locale -> {
				try {
					System.out.println("Parsed '" + s + "' using the locale, " + locale + " => " + parseToInstant(s, locale));
				}catch(DateTimeException e) {
					//....
				}
			});
		});
	}

	static Instant parseToInstant(String strDateTime, Locale locale) {
		return DateTimeFormatter.ofPattern("E, d [MMMM][MMM][M] u H:m:s Z").withLocale(locale).parse(strDateTime,
				Instant::from);
	}
}