It looks like DateFormat can't find the end of milliseconds and the start of timezone. Regex to the rescue!
This is a work around:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S Z");
Date date1 = sdf.parse("2011-06-07T14:08:59.697-0700".replaceAll("(?=.{5}$)", " "));
The regex puts a space in and this code executes without error.