Hi there,
During the start of daylight saving time yesterday, I noticed a bug in the Sydney Trains GTFS timetable data, as available from https://api.transport.nsw.gov.au/v1/gtfs/schedule/sydneytrains. I have not checked whether this bug is present in the GTFS bundle for any other mode or the “Timetables complete GTFS” bundle.
Below is an extract of the stop times for the trip N601.1307.161.2.D.10.86754251 as it appeared in the GTFS bundle published on Saturday morning:
| Stop | arrival_time | departure_time |
|---|---|---|
| Croydon Platform 3 | 01:58:00 | 01:58:00 |
| Burwood Platform 4 | 01:59:00 | 01:59:00 |
| Strathfield Platform 6 | 03:00:30 | 03:01:30 |
| North Strathfield Platform 2 | 03:04:24 | 03:04:24 |
These are the correct times for this service in local time, noting the time change occurs between Burwood and Strathfield, however according to the GTFS standard, times must be measured from “noon minus 12h”, meaning this trip should’ve been represented as follows:
| Stop | arrival_time | departure_time |
|---|---|---|
| Croydon Platform 3 | 02:58:00 | 02:58:00 |
| Burwood Platform 4 | 02:59:00 | 02:59:00 |
| Strathfield Platform 6 | 03:00:30 | 03:01:30 |
| North Strathfield Platform 2 | 03:04:24 | 03:04:24 |
(I should note that the stop times prior to Croydon were also incorrect, I’ve just omitted them for brevity)
I also saw this impacting services which departed before midnight and thus have timestamps based on the previous day. For example 497L.1307.161.128.H.8.86755795:
| Stop | arrival_time | departure_time |
|---|---|---|
| Coledale Platform 2 | 25:55:42 | 25:56:12 |
| Austinmer Platform 2 | 25:58:36 | 25:59:06 |
| Thirroul Platform 2 | 27:01:00 | 27:01:30 |
| Bulli Platform 2 | 27:03:30 | 27:04:00 |
And corrected:
| Stop | arrival_time | departure_time |
|---|---|---|
| Coledale Platform 2 | 25:55:42 | 25:56:12 |
| Austinmer Platform 2 | 25:58:36 | 25:59:06 |
| Thirroul Platform 2 | 26:01:00 | 26:01:30 |
| Bulli Platform 2 | 26:03:30 | 26:04:00 |
(noting in this case it is the times after the transition that were incorrect)
In previous years I have verified that the Sydney Trains GTFS bundle captures DST changes correctly, so this seems to be a somewhat recent regression.
P35 of the TfNSW GTFS Implementation Specification V1.0.3 notes the requirement to use the “noon minus 12h” baseline, however this appears to have been removed from v2.0 of the specification in an effort to not duplicate the base GTFS specification.
Thanks in advance for looking into this, and please reach out if any further information is needed ![]()