Анализ даты из строки

Swift:
Анализ даты из строки

Как это сделать:

Swift делает разбор дат достаточно простым с помощью DateFormatter. Вот короткий пример:

import Foundation

let dateString = "2023-04-01"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"

if let parsedDate = dateFormatter.date(from: dateString) {
    print("Разобранная дата: \(parsedDate)")
} else {
    print("Не удалось разобрать дату.")
}

Пример вывода может выглядеть так, в зависимости от вашего часового пояса:

Разобранная дата: 2023-03-31 22:00:00 +0000

Помните, вывод по умолчанию в UTC!

Глубокое погружение

Еще со времен Objective-C, разработчики iOS использовали NSDateFormatter, который был перенесен в Swift как DateFormatter. Ранее работа с датами была довольно сложной из-за различий в форматах и часовых поясах. К счастью, DateFormatter в Swift стандартизирует этот процесс.

Хотя DateFormatter подходит для обычных сценариев, существуют альтернативы, такие как ISO8601DateFormatter, для форматов ISO 8601, и вы даже можете погрузиться в более низкоуровневый API Cocoa с использованием CFDateFormatter для более тонкой настройки.

При реализации разбора даты всегда устанавливайте locale как posix (en_US_POSIX), чтобы избежать неожиданного поведения из-за пользовательских настроек. Также имейте в виду, что разбор дат требует много ресурсов, поэтому повторно используйте ваш форматтер или рассмотрите возможность использования DateComponents для повторяющихся задач.

Смотрите также