Trabalho com datas em Swift (iOS/macOS): visão geral das bibliotecas
Trabalhar com datas e horas é uma das tarefas mais comuns e, ao mesmo tempo, complexas no desenvolvimento para iOS e macOS. O framework padrão Foundation fornece ferramentas poderosas, mas nem sempre intuitivas: Date, DateFormatter, Calendar, TimeInterval. No entanto, para simplificar operações rotineiras (parsing de strings, intervalos legíveis por humanos, localização), existem bibliotecas especializadas. Neste artigo, abordaremos as principais abordagens e ferramentas populares.
1. Ferramentas nativas do Foundation
Antes de adicionar soluções de terceiros, é importante saber trabalhar com as ferramentas nativas. As principais classes:
Date— um ponto no tempo (com precisão de segundos).DateFormatter— conversão de string para data e vice-versa.Calendar— trabalho com unidades de calendário (ano, mês, dia).TimeInterval— diferença entre datas em segundos.
Exemplo: formatação de data
import Foundation
let now = Date()let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"formatter.locale = Locale(identifier: "pt_BR")let dateString = formatter.string(from: now)print(dateString) // 2025-02-18 14:30:00Exemplo: cálculo de diferença em dias
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!) // 7Essas funcionalidades são suficientes para a maioria dos cenários básicos. Mas quando é necessário parsing complexo ou localização, o código se torna extenso.
2. Biblioteca DateHelper
DateHelper — uma biblioteca leve (disponível via Swift Package Manager) que adiciona extensões convenientes ao Date. O principal destaque são as datas relativas legíveis por humanos.
Instalação: em Package.swift, adicione a dependência https://github.com/melvitax/DateHelper.
Exemplo: "3 horas atrás"
import DateHelper
let pastDate = Date() - 3.hoursprint(pastDate.toRelativeString()) // "3 hours ago"// Com localização: print(pastDate.toRelativeString(locale: "pt"))A biblioteca suporta vários formatos de saída: .short, .medium, .full. É a opção ideal para aplicativos que precisam mostrar "agora mesmo", "ontem", "2 semanas atrás" sem escrever um parser próprio.
3. SwiftDate — a ferramenta mais poderosa
SwiftDate (autor: Daniele Margutti) é praticamente o padrão de facto para trabalhar com datas em Swift. Inclui:
- Parsing de strings com detecção automática de formato.
- Manipulações de datas (adição/subtração de componentes).
- Cálculo de diferenças em qualquer unidade.
- Localização (suporte a 30+ idiomas).
- Trabalho com fusos horários e calendários.
Instalação: via SPM ou CocoaPods.
Exemplo: parsing de string com formato desconhecido
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.portuguese)) // "18 fevereiro 2025"}Exemplo: obtenção de intervalo em formato legível
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 também pode trabalhar com Também na biblioteca
Processamento e parsing de Markdown em PHP: bibliotecas e ferramentas
Processamento de JSON em JavaScript (Node.js): Guia Completo
Envio de email em JavaScript (Node.js): nodemailer, sendgrid, mailgun
Gerenciamento de configuração de aplicações TypeScript: guia completo
ts-morph para TypeScript: guia completo com exemplos
Recommendations