Что-то не так с моим методом: вместо того, чтобы печатать 07.05.2024, он печатает 07.07.2024.
ВременнойИнтервал = 1720189102.0
print: Необязательно((год: Необязательно(2024), месяц: Необязательно(7), день: Необязательно(7)))
https://www.unixtimestamp.com/index.php
extension TimeInterval {
func dateTimestampDividedInt(date: TimeInterval) -> (year: Int?, month: Int?, day: Int?) {
let dateFormatter = DateFormatter()
let dateConv = Date()
dateFormatter.dateFormat = "yyyy"
let year = dateFormatter.string(from: dateConv)
let yearInt = Int(year)
dateFormatter.dateFormat = "MM"
let month = dateFormatter.string(from: dateConv)
let monthInt = Int(month)
dateFormatter.dateFormat = "dd"
let day = dateFormatter.string(from: dateConv)
let dayInt = Int(day)
return (yearInt, monthInt, dayInt)
}
}
Как должна выглядеть правильная функция?
Правильная функция должна использовать компоненты календарей. Это означает, что возвращаемое значение даже не обязательно должно быть необязательным. И он автоматически преобразует его в Int
. И он короче. И это решает проблему.
extension TimeInterval {
static func dateTimestampDividedInt(date: TimeInterval) -> (year: Int, month: Int, day: Int) {
let calendar = Calendar.current
let date = Date(timeIntervalSince1970: date)
let day = calendar.component(.day, from: date)
let month = calendar.component(.month, from: date)
let year = calendar.component(.year, from: date)
return (year, month, day)
}
}