Trabajo con fechas en Swift (iOS/macOS): reseña de bibliotecas
Trabajar con fechas y horas es una de las tareas más comunes y, a la vez, complejas en el desarrollo para iOS y macOS. El framework estándar Foundation proporciona herramientas potentes, pero no siempre intuitivas: Date, DateFormatter, Calendar, TimeInterval. Sin embargo, para simplificar operaciones rutinarias (análisis sintáctico de cadenas, intervalos legibles para humanos, localización) existen bibliotecas especializadas. En este artículo analizaremos los enfoques principales y las herramientas populares.
1. Herramientas integradas de Foundation
Antes de conectar soluciones de terceros, es importante saber trabajar con las herramientas nativas. Las clases principales son:
Date— un punto en el tiempo (con precisión de segundos).DateFormatter— conversión de cadena a fecha y viceversa.Calendar— trabajo con unidades calendario (año, mes, día).TimeInterval— diferencia entre fechas en segundos.
Ejemplo: formateo de fecha
import Foundation
let now = Date()let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"formatter.locale = Locale(identifier: "es_ES")let dateString = formatter.string(from: now)print(dateString) // 2025-02-18 14:30:00Ejemplo: cálculo de diferencia en días
let calendar = Calendar.currentlet start = Date()let end = calendar.date(byAdding: .day, value: 7, to: start)!let components = calendar.dateComponents([.day], from: start, to: end)print(components.day!) // 7Estas capacidades son suficientes para la mayoría de los escenarios básicos. Pero cuando se requiere un análisis sintáctico complejo o localización, el código se vuelve voluminoso.
2. Biblioteca DateHelper
DateHelper — una biblioteca ligera (disponible a través de Swift Package Manager) que añade extensiones convenientes a Date. Su principal característica son las fechas relativas legibles para humanos.
Instalación: en Package.swift agregue la dependencia https://github.com/melvitax/DateHelper.
Ejemplo: «hace 3 horas»
import DateHelper
let pastDate = Date() - 3.hoursprint(pastDate.toRelativeString()) // "3 hours ago"// Con localización: print(pastDate.toRelativeString(locale: "es"))La biblioteca admite múltiples formatos de salida: .short, .medium, .full. Es una opción ideal para aplicaciones donde se necesita mostrar «ahora mismo», «ayer», «hace 2 semanas» sin escribir un analizador propio.
3. SwiftDate — la herramienta más potente
SwiftDate (autor: Daniele Margutti) es, de hecho, el estándar de facto para trabajar con fechas en Swift. Incluye:
- Análisis sintáctico de cadenas con detección automática de formato.
- Manipulaciones con fechas (suma/resta de componentes).
- Cálculo de diferencias en cualquier unidad.
- Localización (soporte para más de 30 idiomas).
- Trabajo con husos horarios y calendarios.
Instalación: a través de SPM o CocoaPods.
Ejemplo: análisis sintáctico de una cadena con formato desconocido
import SwiftDate
let dateString = "2025-02-18T14:30:00+03:00"if let date = dateString.toDate() { print(date.year) // 2025 print(date.month) // 2 print(date.toFormat("dd MMMM yyyy", locale: Locales.spanish)) // "18 febrero 2025"}Ejemplo: obtención del intervalo en formato legible
let start = DateInRegion(Date())let end = start + 2.hours + 30.minuteslet interval = start.toRelativeString(end, style: RelativeFormatter.defaultStyle())print(interval) // "2 hours 30 minutes later"SwiftDate también puede trabajar con También en la biblioteca
Programación reactiva en C++: bibliotecas y práctica
Envío de SMS en C# (.NET): Integración con API de servicios SMS a través de HttpClient
GraphQL en C# (.NET): bibliotecas Hot Chocolate y GraphQL.NET para crear API
Registro en JavaScript (Node.js): las mejores soluciones para tu proyecto
Generación de PDF en Rust: revisión de bibliotecas y herramientas para crear documentos PDF
Recommendations