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 для повторяющихся задач.