Fix timezone for time in departures query (EFA). Thanks to Simon Woker for catching this.

This commit is contained in:
Andreas Schildbach 2014-07-29 15:55:38 +02:00
parent a63f7d727d
commit c0c033cfcd
2 changed files with 19 additions and 13 deletions

View file

@ -20,8 +20,6 @@ package de.schildbach.pte;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collection; import java.util.Collection;
@ -1995,9 +1993,6 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
protected String xsltTripRequestParameters(final Location from, final Location via, final Location to, final Date date, final boolean dep, protected String xsltTripRequestParameters(final Location from, final Location via, final Location to, final Date date, final boolean dep,
final Collection<Product> products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options) final Collection<Product> products, final WalkSpeed walkSpeed, final Accessibility accessibility, final Set<Option> options)
{ {
final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd", Locale.US);
final DateFormat TIME_FORMAT = new SimpleDateFormat("HHmm", Locale.US);
final StringBuilder uri = new StringBuilder(); final StringBuilder uri = new StringBuilder();
appendCommonRequestParams(uri, "XML"); appendCommonRequestParams(uri, "XML");
@ -2012,8 +2007,16 @@ public abstract class AbstractEfaProvider extends AbstractNetworkProvider
if (via != null) if (via != null)
appendLocation(uri, via, "via"); appendLocation(uri, via, "via");
uri.append("&itdDate=").append(ParserUtils.urlEncode(DATE_FORMAT.format(date))); final Calendar c = new GregorianCalendar(timeZone);
uri.append("&itdTime=").append(ParserUtils.urlEncode(TIME_FORMAT.format(date))); c.setTime(date);
final int year = c.get(Calendar.YEAR);
final int month = c.get(Calendar.MONTH) + 1;
final int day = c.get(Calendar.DAY_OF_MONTH);
final int hour = c.get(Calendar.HOUR_OF_DAY);
final int minute = c.get(Calendar.MINUTE);
uri.append("&itdDate=").append(ParserUtils.urlEncode(String.format(Locale.ENGLISH, "%04d%02d%02d", year, month, day)));
uri.append("&itdTime=").append(ParserUtils.urlEncode(String.format(Locale.ENGLISH, "%02d%02d", hour, minute)));
uri.append("&itdTripDateTimeDepArr=").append(dep ? "dep" : "arr"); uri.append("&itdTripDateTimeDepArr=").append(dep ? "dep" : "arr");
uri.append("&calcNumberOfTrips=").append(numTripsRequested); uri.append("&calcNumberOfTrips=").append(numTripsRequested);

View file

@ -711,12 +711,15 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider
final Calendar c = new GregorianCalendar(timeZone); final Calendar c = new GregorianCalendar(timeZone);
c.setTime(date); c.setTime(date);
final String dateStr = useIso8601 ? String.format(Locale.ENGLISH, "%04d-%02d-%02d", c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1, final int year = c.get(Calendar.YEAR);
c.get(Calendar.DAY_OF_MONTH)) : String.format(Locale.ENGLISH, "%02d.%02d.%02d", c.get(Calendar.DAY_OF_MONTH), final int month = c.get(Calendar.MONTH) + 1;
c.get(Calendar.MONTH) + 1, c.get(Calendar.YEAR) - 2000); final int day = c.get(Calendar.DAY_OF_MONTH);
uri.append("&REQ0JourneyDate=").append(ParserUtils.urlEncode(dateStr)); final int hour = c.get(Calendar.HOUR_OF_DAY);
final String timeStr = String.format(Locale.ENGLISH, "%02d:%02d", c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)); final int minute = c.get(Calendar.MINUTE);
uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(timeStr)); uri.append("&REQ0JourneyDate=").append(
ParserUtils.urlEncode(useIso8601 ? String.format(Locale.ENGLISH, "%04d-%02d-%02d", year, month, day) : String.format(Locale.ENGLISH,
"%02d.%02d.%02d", day, month, year - 2000)));
uri.append("&REQ0JourneyTime=").append(ParserUtils.urlEncode(String.format(Locale.ENGLISH, "%02d:%02d", hour, minute)));
final StringBuilder productsStr = new StringBuilder(numProductBits); final StringBuilder productsStr = new StringBuilder(numProductBits);
if (products != null) if (products != null)