Как я могу исключить время из даты

Прежде всего, я использую API, где дата возвращается мне в виде строки и возвращается мне в формате гггг-ММ-дд, поэтому я хочу получить 4 сентября 2024 года, и мне удалось это сделать, но я могу Не исключайте время из даты.

Мой код DateFormatter;

var newDate:DateFormatter {
    
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd.MM.yy"
    dateFormatter.dateStyle = .short
    dateFormatter.timeStyle = .none
    
    return dateFormatter
}

и это дает мне вот это

также, когда я анализирую JSON, который я использую;

decoder.dateDecodingStrategy = .iso8601

Так что же я делаю не так, ребята?

и вот как я использую это в своем коде;

Text("Release Date: \(newDate.date(from: part.releaseDate) ?? Date.now)")

51
1

Ответ:

Решено

Вы неправильно используете форматировщик даты. date(from:) назначает дату, а вам нужна строка.

я хочу получить 4 сентября 2024 года

Ваш код, хотя сам по себе довольно неправильный, работает правильно, если вы измените date(from:) на string(from:) и исправите форматтер, если входные данные являются датой:

var newDate:DateFormatter {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "d MMMM yyyy"
    return dateFormatter
}

print("Release Date: \(newDate.string(from: Date.now))")

Результат:

Release Date: 4 September 2024

Возможно, вам понадобятся два средства форматирования: один для преобразования данных, поступающих из API, в дату, а другой (этот) для преобразования этой даты в строку для представления. Но вы показали недостаточно кода, чтобы я мог это понять.