Работа с датами в Swift: Foundation и DateFormatter

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что это и зачем нужно?

Swift — современный язык программирования от Apple для iOS, macOS, watchOS и tvOS. Работа с датами — одна из ключевых задач в мобильной и десктопной разработке: от отображения времени в чатах до расчёта дедлайнов в приложениях. В Swift нет отдельной библиотеки для дат — вся функциональность встроена в фреймворк Foundation. Он предоставляет классы Date, DateFormatter, Calendar и DateComponents, которые позволяют создавать, форматировать, сравнивать и манипулировать датами.

Как установить?

Foundation — часть стандартной библиотеки Swift, поэтому установка не требуется. Просто импортируйте модуль в вашем файле: import Foundation. Для работы с датами в iOS/macOS проектах (через Xcode) никаких дополнительных зависимостей не нужно.

Основные функции

  • Создание даты: Date() — текущая дата и время; Date(timeIntervalSinceNow:) — дата через N секунд.
  • Форматирование: DateFormatter — преобразование даты в строку (локализованный вывод) и обратно.
  • Компоненты даты: Calendar.current.dateComponents([.year, .month, .day], from: date) — извлечение года, месяца, дня.
  • Сравнение: операторы ==, <, >, а также compare().
  • Манипуляции: Calendar.current.date(byAdding: .day, value: 7, to: date) — добавление 7 дней.

Пример кода на Swift (iOS/macOS)

import Foundation

// Текущая дата
let now = Date()
print("Сейчас: \(now)")

// Форматирование в локализованную строку
let formatter = DateFormatter()
formatter.dateStyle = .long
formatter.timeStyle = .short
formatter.locale = Locale(identifier: "ru_RU")
let formatted = formatter.string(from: now)
print("Форматированная дата: \(formatted)")

// Извлечение дня недели
let calendar = Calendar.current
let weekday = calendar.component(.weekday, from: now)
print("День недели (1=воскресенье): \(weekday)")

// Добавление 3 дней
if let futureDate = calendar.date(byAdding: .day, value: 3, to: now) {
    print("Через 3 дня: \(formatter.string(from: futureDate))")
}

// Парсинг строки
formatter.dateFormat = "yyyy-MM-dd"
if let parsedDate = formatter.date(from: "2025-12-31") {
    print("Распарсено: \(parsedDate)")
}

Когда использовать?

Используйте встроенные инструменты Foundation всегда, когда нужно работать с датами в Swift: отображение времени в UI, расчёт разницы между датами, создание календарей, напоминаний, таймеров, логирование событий. Для сложных сценариев (например, работа с часовыми поясами или повторяющимися событиями) комбинируйте DateComponents и Calendar. Альтернативные сторонние библиотеки (например, SwiftDate) существуют, но для большинства проектов достаточно Foundation.

Рекомендаций