code: private static Calendar parseDateFormat(String s, DateFormat dateFormat,
  											TimeZone tz, ParsePosition pp) {
  		if (tz == null) {
  			tz = DEFAULT_ZONE;
  		}
  		Calendar ret = Calendar.getInstance(tz, Locale.ROOT);
  		dateFormat.setCalendar(ret);
  		dateFormat.setLenient(false);
  
  		final Date d = dateFormat.parse(s, pp);
  		if (null == d) {
  			return null;
  		}
  		ret.setTime(d);
  		ret.setTimeZone(UTC_ZONE);
  		return ret;
  	}
docs: Parses a string using {@link SimpleDateFormat} and a given pattern. This
  method parses a string at the specified parse position and if successful,
  updates the parse position to the index after the last character used.
  The parsing is strict and requires months to be less than 12, days to be
  less than 31, etc.
  
  @param s       string to be parsed
  @param dateFormat Date format
  @param tz      time zone in which to interpret string. Defaults to the Java
  default time zone
  @param pp      position to start parsing from
  @return a Calendar initialized with the parsed value, or null if parsing
  failed. If returned, the Calendar is configured to the GMT time zone.