Trabajo con fechas y horas en Swift: de la A a la Z

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción al trabajo con fechas y horas en Swift

Trabajar con fechas y horas es una de las tareas clave al desarrollar aplicaciones para iOS y macOS. Desde la simple visualización de la fecha actual hasta cálculos complejos de intervalos de tiempo y gestión de zonas horarias, Swift proporciona un conjunto de herramientas potente y flexible. En este artículo, analizaremos las principales clases y estructuras: Date, DateFormatter, Calendar, DateComponents y TimeInterval. Aprenderás a crear, formatear, comparar y manipular fechas en la práctica.



Clases y estructuras principales

En Swift, se utilizan varios tipos fundamentales para trabajar con fechas. Veamos cada uno de ellos.

  • Date — estructura que representa un momento específico en el tiempo. No depende del calendario ni de la zona horaria.
  • DateFormatter — clase para convertir una fecha en una cadena y viceversa.
  • Calendar — estructura que describe un calendario (gregoriano, budista, etc.) y proporciona métodos para trabajar con componentes de fecha.
  • DateComponents — estructura para almacenar componentes individuales de una fecha (año, mes, día, hora, minuto, etc.).
  • TimeInterval — tipo (Double) que representa una cantidad de segundos.


Trabajo con Date y DateFormatter

Empecemos con lo más simple: obtener la fecha actual y mostrarla al usuario.



Obtener la fecha actual

import Foundation

let currentDate = Date()print("Fecha y hora actual: \\(currentDate)")// Salida: Fecha y hora actual: 2025-04-05 12:30:00 +0000


Formateo de fecha

Para que la fecha se vea familiar, usamos DateFormatter:

let formatter = DateFormatter()formatter.dateFormat = "dd.MM.yyyy HH:mm"let dateString = formatter.string(from: currentDate)print("Fecha formateada: \\(dateString)")// Salida: Fecha formateada: 05.04.2025 12:30


Convertir una cadena en fecha

let dateString = "2025-04-05 14:00"formatter.dateFormat = "yyyy-MM-dd HH:mm"if let parsedDate = formatter.date(from: dateString) {    print("Fecha analizada: \\(parsedDate)")} else {    print("Error de análisis")}

Importante: siempre verifica que date(from:) no devuelva nil, de lo contrario la aplicación podría fallar.



Manipulación de fechas con Calendar y DateComponents

A menudo es necesario agregar días, meses o calcular la diferencia entre fechas. Aquí es donde Calendar resulta útil.



Sumar y restar tiempo

let calendar = Calendar.currentlet oneWeekLater = calendar.date(byAdding: .day, value: 7, to: currentDate)!let oneMonthAgo = calendar.date(byAdding: .month, value: -1, to: currentDate)!

print("En una semana: \\(formatter.string(from: oneWeekLater))")print("Hace un mes: \\(formatter.string(from: oneMonthAgo))")


Extraer componentes de fecha

let components = calendar.dateComponents([.year, .month, .day, .hour], from: currentDate)if let year = components.year, let month = components.month {    print("Hoy: \\(year)-\\(month)")}


Crear una fecha a partir de componentes

var newComponents = DateComponents()newComponents.year = 2025newComponents.month = 12newComponents.day = 25newComponents.hour = 10newComponents.minute = 0

if let christmas = calendar.date(from: newComponents) { print("Navidad: \\(formatter.string(from: christmas))")}


Comparación de fechas y trabajo con TimeInterval

Swift permite comparar fechas fácilmente y calcular intervalos de tiempo.



Comparación de fechas

let now = Date()let futureDate = calendar.date(byAdding: .day, value: 10, to: now)!

if futureDate > now { print("

Blogs

Book Recommendations