Trabajo con fechas y horas en Swift: guía completa

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 en el desarrollo de aplicaciones para iOS y macOS. Ya sea para mostrar la fecha actual, calcular la diferencia entre eventos o planificar notificaciones, Swift proporciona un conjunto de herramientas potente y flexible para estos fines. En este artículo, analizaremos las clases y métodos principales: Date, DateFormatter, Calendar, DateComponents y TimeInterval. Aprenderás a crear, formatear, comparar y manipular fechas en Swift.

El material será útil tanto para principiantes como para desarrolladores experimentados que deseen sistematizar sus conocimientos. Todos los ejemplos de código se pueden usar directamente en tus proyectos.



Clases principales para trabajar con fechas



Clase Date

Date es un tipo fundamental que representa un momento específico en el tiempo, independientemente de la zona horaria o el calendario. Almacena la cantidad de segundos transcurridos desde el 1 de enero de 2001 (época de Cocoa).

import Foundation

// Fecha y hora actuallet now = Date()print("Ahora: \\(now)")

// Fecha dentro de 1 horalet oneHourLater = Date(timeIntervalSinceNow: 3600)print("En una hora: \\(oneHourLater)")

// Fecha a partir de una cantidad dada de segundos desde la épocalet epochDate = Date(timeIntervalSinceReferenceDate: 0)print("Época de Cocoa: \\(epochDate)")


TimeInterval

TimeInterval es simplemente un alias para Double que representa una cantidad de segundos. Se utiliza para definir intervalos de tiempo.

let interval: TimeInterval = 86400 // 24 horas en segundoslet tomorrow = Date(timeIntervalSinceNow: interval)print("Mañana: \\(tomorrow)")


DateFormatter

DateFormatter se encarga de convertir una fecha en una cadena de texto y viceversa. Es una de las clases más utilizadas.

let formatter = DateFormatter()formatter.dateStyle = .longformatter.timeStyle = .short

let currentDate = Date()let dateString = formatter.string(from: currentDate)print("Fecha formateada: \\(dateString)")

// Conversión inversalet dateFromString = formatter.date(from: "15 de abril de 2025, 14:30")print("Fecha desde cadena: \\(dateFromString ?? Date())")

Puedes definir un formato personalizado usando dateFormat:

formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"let customString = formatter.string(from: Date())print("Formato personalizado: \\(customString)")


Calendario y componentes de fecha



Calendar

Calendar permite trabajar con fechas en el contexto de un calendario específico (gregoriano, islámico, etc.) y una zona horaria.

let calendar = Calendar.currentlet components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: Date())print("Año: \\(components.year!), Mes: \\(components.month!), Día: \\(components.day!)")


DateComponents

DateComponents es una estructura que contiene componentes individuales de una fecha (año, mes, día, hora, etc.). Se utiliza para crear nuevas fechas o extraer partes de las existentes.

// Crear una fecha a partir de componentesvar birthdayComponents = DateComponents()birthdayComponents.year = 1990birthdayComponents.month = 6birthdayComponents.day = 15birthdayComponents.hour = 10

if let birthday = calendar.date(from: birthdayComponents) { print("Cumpleaños: \\(birthday)")}

// Añadir días a una fechaif let nextWeek = calendar.date(byAdding: .day, value: 7, to: Date()) { print("En una semana: \\(nextWeek)")}

Los componentes se pueden usar para verificar propiedades de la fecha:

let isToday = calendar.isDateInToday(Date())print("¿Es hoy? \\(isToday)")

let isWeekend = calendar.isDateInWeekend(Date())print("¿Es fin de semana? \\(isWeekend)")


Com

Blogs

Book Recommendations