private List<CuriositySegment> parseSegments(Element element) { List<CuriositySegment> segments = Lists.newArrayList(); DateTime flightDate = new DateTime(); Elements segmentElements = element.select("tbody>tr"); for (Element segmentElement : segmentElements) { if (!segmentElement.select("td.upsellCity").text().equalsIgnoreCase("") && segmentElement.select("td.upsellCity").text() != null) { CuriositySegment segment = new CuriositySegment(); String airlineCode = segmentElement.select("td[id~=idUpsellIti]").text(); String depCode = segmentElement.select("td.upsellCity").get(0).text(); String arrCode = segmentElement.select("td.upsellCity").get(1).text(); String depTime = segmentElement.select("td.upsellTime").get(0).text(); String arrTime = segmentElement.select("td.upsellTime").get(1).text(); segment.setDepartureName(depCode); segment.setArrivalName(arrCode); if (depTime.contains("+")) { flightDate = flightDate.plusDays( Integer.parseInt( depTime.substring(depTime.indexOf("+") + 1, depTime.indexOf("+") + 2))); depTime = depTime.substring(0, (depTime.indexOf("+") - 1)); } segment.setDepartureTime( PARSER_DATE_TIME_FORMATTER, DATE_TIME_FORMATTER.print(flightDate) + depTime); if (arrTime.contains("+")) { flightDate = flightDate.plusDays( Integer.parseInt( arrTime.substring(arrTime.indexOf("+") + 1, arrTime.indexOf("+") + 2))); arrTime = arrTime.substring(0, (arrTime.indexOf("+") - 1)); } segment.setArrivalTime( PARSER_DATE_TIME_FORMATTER, DATE_TIME_FORMATTER.print(flightDate) + arrTime); segment.setAirlineCode(airlineCode.substring(0, 2)); segment.setFlightNumber(airlineCode.substring(2)); segments.add(segment); } } return segments; }