This might be what you're looking for: "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
Date parsed1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
Date parsed2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.US).parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019
As Basil points out below, these also work if you are running Java 8+ or a backport of JSR 310:
OffsetDateTime parsed1 = OffsetDateTime.parse("2019-03-01T22:22:50.591Z");
System.out.println(parsed1); // Fri Mar 01 16:22:50 CST 2019
OffsetDateTime parsed2 = OffsetDateTime.parse("2019-03-01T22:22:50.591-08:00");
System.out.println(parsed2); // Sat Mar 02 00:22:50 CST 2019