Zonas horarias y configuraciones regionales
Gestione correctamente las diferencias de zonas y configuraciones regionales.
Zonas horarias y configuraciones regionales es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
Zonas horarias y configuraciones regionales
El mismo instante de Date se muestra de forma diferente en distintas partes del mundo. TimeZone y Locale determinan cómo se interpreta y se muestra.
Fundamentos de TimeZone
Un TimeZone representa un desfase respecto a UTC, además de las reglas del horario de verano. TimeZone.current es la zona del dispositivo.
import Foundation
let tz = TimeZone.current
print("Identifier present: \(!tz.identifier.isEmpty)")Crear una zona específica
Construya una zona con nombre mediante TimeZone(identifier:), por ejemplo «America/New_York» o «Europe/Istanbul».
import Foundation
if let tokyo = TimeZone(identifier: "Asia/Tokyo") {
print("Tokyo offset seconds: \(tokyo.secondsFromGMT())")
}Desfases respecto a GMT
secondsFromGMT(for:) proporciona el desfase actual, que puede cambiar a lo largo del año debido al horario de verano.
import Foundation
let utc = TimeZone(identifier: "UTC")!
print("UTC offset is zero: \(utc.secondsFromGMT() == 0)")Las zonas afectan a los calendarios
Establezca timeZone en un calendario para que los cálculos de días y horas usen esa región en lugar de la configuración predeterminada del dispositivo.
import Foundation
var cal = Calendar.current
cal.timeZone = TimeZone(identifier: "UTC")!
let hour = cal.component(.hour, from: Date())
print("Hour in UTC between 0 and 23: \(0...23 ~= hour)")Zonas en el formato
Un Date.FormatStyle puede incluir una zona horaria específica para que el resultado refleje esa región independientemente de la configuración del dispositivo.
import Foundation
let style = Date.FormatStyle(date: .omitted, time: .shortened)
.timeZone(TimeZone(identifier: "UTC")!)
let s = Date().formatted(style)
print(!s.isEmpty)Fundamentos de Locale
Un Locale recoge el idioma y las convenciones regionales: nombres de los meses, primer día de la semana y orden de los números y las fechas.
import Foundation
let locale = Locale.current
print("Has identifier: \(!locale.identifier.isEmpty)")Crear un Locale
Cree una configuración regional específica mediante Locale(identifier:), como «fr_FR» o «tr_TR».
import Foundation
let french = Locale(identifier: "fr_FR")
print("French locale id: \(french.identifier)")Locale cambia el resultado
Aplicar una configuración regional a un estilo de formato cambia los nombres de los meses y su orden. La misma fecha se lee de forma diferente en cada idioma.
import Foundation
let now = Date()
let style = Date.FormatStyle(date: .long, time: .omitted)
.locale(Locale(identifier: "en_US"))
print(!now.formatted(style).isEmpty)Locale y Calendar juntos
Locale también afecta al primer día de la semana y a la numeración de las semanas del calendario. Combine zona, configuración regional y calendario para obtener resultados totalmente correctos.
import Foundation
var cal = Calendar(identifier: .gregorian)
cal.locale = Locale(identifier: "en_US")
print("First weekday: \(cal.firstWeekday)")Almacenar en UTC y mostrar en local
Práctica recomendada: almacene y transmita las fechas en UTC y conviértalas a la zona y configuración regional del usuario solo para mostrarlas.
import Foundation
let instant = Date()
let utcStyle = Date.FormatStyle(date: .numeric, time: .standard)
.timeZone(TimeZone(identifier: "UTC")!)
print("UTC display ready: \(!instant.formatted(utcStyle).isEmpty)")Comprobación rápida
¿Cuál es la forma recomendada de gestionar fechas entre distintas regiones?
Resumen
TimeZone establece el desfase respecto a UTC y las reglas del horario de verano, mientras que Locale controla el idioma y el formato regional. Ambos se asocian a calendarios y estilos de formato. Almacene las fechas en UTC y conviértalas a la zona y configuración regional locales solo al mostrarlas. Con esto termina el curso sobre fechas y calendarios.
Preguntas frecuentes
¿La lección «Zonas horarias y configuraciones regionales» es gratis?
Sí — el texto completo de «Zonas horarias y configuraciones regionales» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Zonas horarias y configuraciones regionales»?
Gestione correctamente las diferencias de zonas y configuraciones regionales. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Zonas horarias y configuraciones regionales»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El tipo Date e intervalos de tiempo
- Calendar y DateComponents
- Formato de fechas
- Zonas horarias y configuraciones regionales