Girona

Les estacions són alguna osa més que un lloc des del qual pujar a un tren o desembarcar-ne. A més de prestar els seus serveis als viatgers i usuaris, moltes d’aquestes constitueixen una referència a les localitats on s’ubiquen.
Aquí es poden conèixer els horaris d’arribades i sortides de l’estació, així com els serveis que s’ofereixen en el recinte i les instal·lacions. Si ho necessita, pot anar a aquesta informació a través del selector que posem a la seva disposició.
-
dimecres 10/06/2026
-
Hora actual - 08:08 h
-
Estat de la xarxa
Sortides
| Hora de sortida | Destinació | Tren | Via |
|---|
No s’ha pogut recuperar la informació de circulació.
Arribades
| Hora d’arribada | Origen | Tren | Via |
|---|---|---|---|
|
08:22
|
RF - MD78943 |
||
|
08:36
08:44
|
RF - MD78804 |
||
|
08:45
|
RF - AVANT34737 |
||
|
08:49
|
RF - MD78854 |
||
|
08:55
|
RF - AVE09737 |
||
| Compartido: Avant 34137 Barcelona Sants - Figueres-Vilafant | |||
|
09:18
09:27
|
RF - RODALIES-R1115904 |
||
|
09:23
|
RF - EUROMED01101 |
||
| 10/06/2026 - Se están produciendo retrasos debido a una incidencia en las instalaciones entre SILLA y BENIFAIO. Más información en sus canales habituales. - Compartido: Avant 34201 Figueres-Vilafant - Barcelona Sants | |||
|
09:36
|
RF - MD78806 |
||
|
09:40
|
RF - RODALIES-R1115854 |
||
|
10:07
|
RI - TGV INOUI09708 |
||
|
10:13
|
RF - AVANT08297 |
||
|
10:48
|
RF - RODALIES-R1115908 |
||
|
10:49
|
RF - MD78858 |
||
|
11:10
|
RF - REGIONAL EXPRES78860 |
||
|
11:36
|
RF - MD78808 |
||
|
11:45
|
RF - AVANT34730 |
||
|
11:51
|
RF - AVE09730 |
||
| Compartido: Avant 34130 Figueres-Vilafant - Barcelona Sants | |||
|
12:08
|
RF - AVE03073 |
||
| Compartido: Avant 34073 Barcelona Sants - Figueres-Vilafant | |||
|
12:14
|
RF - RODALIES-R1115860 |
||
|
12:18
|
RF - REGIONAL EXPRES78906 |
||
|
12:40
|
RF - REGIONAL EXPRES78864 |
||
|
13:06
|
RF - MD78810 |
||
|
13:19
|
RF - MD78866 |
||
|
13:24
|
RF - AVANT34394 |
||
No s’ha pogut recuperar la informació de circulació.
Informació de l’estació
-
Adreça
Pza. de Espanya, s/n --- 17002 Girona --- GIRONA
-
Horari
Diario: 05:15 a 23:45
Intermodalitat
Líneas
152
41
42
601
607 (conexión con el Aeropuerto de Girona)
663
E2
E4
Línea 151
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> lista3[cur_elem?index+1].titulo [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 167, column 101]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #if (texto == "Adaptados" && esMayor(... [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" in macro "orderServicesList" at line 166, column 41]
- Reached through: @orderServicesList lista, texto [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" in macro "listPaint" at line 49, column 9]
- Reached through: @listPaint servicios.id.getSiblings()... [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 37, column 9]
----
1<script type="text/javascript">
2
3
4function cierraDetalles(){
5 var detalles = $("div[id^='detalleServicio']");
6 var iconos = $("[id^='button-detalleServicio']");
7 for (let detalle of detalles) {
8 detalle.style.display = 'none'
9 }
10 for (let icono of iconos) {
11 icono.setAttribute('aria-expanded', 'false');
12 }
13}
14
15function toggle(id, id2) {
16
17
18 var n = document.getElementById(id);
19 if (n.style.display != 'none')
20 {
21 n.style.display = 'none';
22 document.getElementById(id2).setAttribute('aria-expanded', 'false');
23 }
24 else
25 {
26 cierraDetalles();
27 n.style.display = '';
28 document.getElementById(id2).setAttribute('aria-expanded', 'true');
29 }
30}
31 </script>
32
33<#if servicios?? && servicios.id?? && servicios.id.getSiblings()?has_content>
34 <div class="title-servicios">
35 <h3><@liferay.language key="es.adif.estacion.servicios"/></h3>
36 </div>
37 <@listPaint servicios.id.getSiblings() ""/>
38</#if>
39
40<#if serviciosAdaptados?? && serviciosAdaptados.idAdaptados?? && serviciosAdaptados.idAdaptados.getSiblings()?has_content>
41 <div class="title-servicios">
42 <h3><@liferay.language key="es.adif.estacion.servicios-adaptados"/></h3>
43 </div>
44 <@listPaint serviciosAdaptados.idAdaptados.getSiblings() "Adaptados"/>
45</#if>
46
47<#macro listPaint lista texto>
48
49 <@orderServicesList lista texto/>
50
51 <#list listaOrdenada as cur_id>
52
53 <#if cur_id?index %3 == 0>
54 <#assign
55 hay1 = listaOrdenada[cur_id?index+1]??
56 hay2 = listaOrdenada[cur_id?index+2]??
57 />
58 <div class="servicios-estacion" id="servicios-estacion">
59 <@boxPaint cur_id cur_id?index texto/>
60 <#if hay1>
61 <@boxPaint listaOrdenada[cur_id?index+1] cur_id?index+1 texto/>
62 <#if hay2>
63 <@boxPaint listaOrdenada[cur_id?index+2] cur_id?index+2 texto/>
64 </#if>
65 </#if>
66 </div>
67 <@detailPaint cur_id cur_id?index texto/>
68 <#if hay1>
69 <@detailPaint listaOrdenada[cur_id?index+1] cur_id?index+1 texto/>
70 <#if hay2>
71 <@detailPaint listaOrdenada[cur_id?index+2] cur_id?index+2 texto/>
72 </#if>
73 </#if>
74 </#if>
75
76 </#list>
77
78</#macro>
79
80<#macro boxPaint elem index texto>
81 <#if texto!="Adaptados">
82 <#if elem.popServicios.getData() ?? && elem.popServicios.getData() != "">
83 <button class="linkServiciosDesp" id="button-detalleServicio${texto}-${index}" aria-expanded="false" aria-controls="detalleServicio${texto}-${index}" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">
84 </#if>
85 <div class="servicio-estacion" id="iconoServicio${texto}-${index}">
86 <div class="servicio-estacion-icono" style="background-image:url('${elem.icono.getData()}')"></div><!-- /.servicio-estacion-icono -->
87 <div class="servicio-estacion-datos">
88 <h4>${elem.titulo.getData()}</h4>
89 <p class="descripcion-servicios">${elem.descripcionServicios.getData()}</p>
90 <#if elem.popServicios.getData() ?? && elem.popServicios.getData() != "">
91 <p class="detalle-mas-informacion">
92 <span class="texto_servicios_responsive" data-desktoptext="Más información" data-phonetext="+"></span>
93 </p>
94 </#if>
95 </div>
96 </div>
97 <#if elem.popServicios.getData() ?? && elem.popServicios.getData() != "">
98 </button>
99 </#if>
100 <#else>
101 <#if elem.popAdaptados.getData() ?? && elem.popAdaptados.getData() != "">
102 <button class="linkServiciosDesp" id="button-detalleServicio${texto}-${index}" aria-expanded="false" aria-controls="detalleServicio${texto}-${index}" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">
103 </#if>
104 <div class="servicio-estacion" id="iconoServicio${texto}-${index}">
105 <div class="servicio-estacion-icono" style="background-image:url('${elem.iconoAdaptados.getData()}'"></div><!-- /.servicio-estacion-icono -->
106 <div class="servicio-estacion-datos">
107 <h4>${elem.tituloAdaptados.getData()}</h4>
108 <p class="descripcion-servicios">${elem.descripcionAdaptados.getData()}</p>
109 <#if elem.popAdaptados.getData() ?? && elem.popAdaptados.getData() != "">
110 <p class="detalle-mas-informacion">
111 <span class="texto_servicios_responsive" data-desktoptext="Más información" data-phonetext="+"></span>
112 </p>
113 </#if>
114 </div>
115 </div>
116 <#if elem.popAdaptados.getData() ?? && elem.popAdaptados.getData() != "">
117 </button>
118 </#if>
119 </#if>
120</#macro>
121
122<#macro detailPaint elem index texto>
123 <#if texto!="Adaptados">
124 <div role="region" aria-labelledby="button-detalleServicio${texto}-${index}" class="servicios-estacion" id="detalleServicio${texto}-${index}" style="display:none">
125 <div class="servicio-estacion servicio-estacion-detalle servicio-estacion-detalle-${index%3} ">
126 <div class="servicio-estacion-icono" style="background-image:url('${elem.icono.getData()}')"></div><!-- /.servicio-estacion-icono -->
127 <div class="servicio-estacion-datos">
128 <h4>${elem.titulo.getData()}</h4>
129 ${elem.popServicios.getData()}
130 <p>
131 <button aria-label="<@liferay.language key="navigation.cerrar" /> ${elem.titulo.getData()}" class="btn-close-adif" type="button" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">×</button>
132
133 </p>
134 </div>
135 </div>
136 </div>
137 <#else>
138 <div role="region" aria-labelledby="button-detalleServicio${texto}-${index}" class="servicios-estacion" id="detalleServicio${texto}-${index}" style="display:none">
139 <div class="servicio-estacion servicio-estacion-detalle servicio-estacion-detalle-${index%3}">
140 <div class="servicio-estacion-icono" style="background-image:url('${elem.iconoAdaptados.getData()}'"></div><!-- /.servicio-estacion-icono -->
141 <div class="servicio-estacion-datos">
142 <h4>${elem.tituloAdaptados.getData()}</h4>
143 ${elem.popAdaptados.getData()}
144 <p>
145 <button class="btn-close-adif" aria-label="<@liferay.language key="navigation.cerrar" /> ${elem.tituloAdaptados.getData()}" type="button" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">×</button>
146 </p>
147 </div>
148 </div>
149 </div>
150 </#if>
151
152</#macro>
153
154<#macro orderServicesList lista texto>
155 <#assign lista2 = []>
156 <#assign lista3 = lista>
157 <#assign stop = true>
158 <#assign run = true>
159 <#assign iteraciones = lista3?size*lista3?size>
160 <#list 0..iteraciones as i>
161 <#assign run = false>
162 <#assign saltarSiguiente = false>
163 <#list lista3 as cur_elem>
164 <#if !saltarSiguiente>
165 <#if !cur_elem?is_last >
166 <#if (texto=="Adaptados" && esMayor(cur_elem.tituloAdaptados.getData(),lista3[cur_elem?index+1].tituloAdaptados.getData()))
167 || (texto!="Adaptados" && esMayor(cur_elem.titulo.getData(),lista3[cur_elem?index+1].titulo.getData()))>
168 <#assign run = true>
169 <#assign lista2 = lista2 + [lista3[cur_elem?index+1], cur_elem]>
170 <#assign saltarSiguiente = true>
171 <#else>
172 <#assign lista2 = lista2 + [cur_elem]/>
173 </#if>
174 <#else>
175 <#assign lista2 = lista2 + [cur_elem]>
176 </#if>
177 <#else>
178 <#assign saltarSiguiente = false/>
179 </#if>
180 </#list>
181 <#if !run>
182 <#break>
183 </#if>
184 <#assign lista3 = lista2>
185 <#assign lista2 = []>
186 </#list>
187
188 <#assign listaOrdenada = lista3>
189</#macro>
190
191<#function esMayor string1 string2>
192 <#assign strings = [string1,string2]?sort>
193 <#return strings[0]==string2>
194</#function>
La Pausa
Número de local: Vestíbulo
Café pans
Número de local: Vestíbulo
Eureka!
Número de local: Planta -1
Estanco
Número de local: Vestíbulo
El vagó d´or
Número de local: Vestíbulo
Hertz
Número de local: Vestíbulo
