Я получаю даты от API следующим образом:
["2019-07-12 12:43:00", "2019-07-09 12:57:35", "2019-07-09 12:04:33", "2019-07-05 14:32:32", "2019-07-04 17:50:23", "2019-07-02 12:12:30", "2019-07-01 18:09:28"]
но я хочу, чтобы я хотел удалить время из этого массива дат, чтобы получить такие даты
Я хочу, чтобы мой желаемый результат был таким
["2019-07-12", "2019-07-09", "2019-07-09", "2019-07-05", "2019-07-04", "2019-07-02", "2019-07-01"]
Причина, по которой я хочу, потому что мне нужно показать события на FSCalendar. Как я могу это сделать?
преобразовать его с помощью средства форматирования даты
@MartinR .... Да, все они являются строками, и формат одинаков для всех дат, и я попробовал этот ответ stackoverflow.com/questions/35392538/…, но не показал фатальную ошибку.
если все строки, используйте разделенные строки и сохраните первый объект в массив, вот и все
@ Anbu.Karthik ... Я видел этот ответ, но все они просто разбивают переменную строки, а не массив
@Wings убедитесь, что ваши строки указаны по местному времени, в противном случае (если они соответствуют времени UTC) вам нужно будет проанализировать ваши даты.





Пожалуйста, проверьте код ниже:
let arr = ["2019-07-12 12:43:00", "2019-07-09 12:57:35", "2019-07-09 12:04:33", "2019-07-05 14:32:32", "2019-07-04 17:50:23", "2019-07-02 12:12:30", "2019-07-01 18:09:28"]
var arrOnlyDates = [String]()
for (_,str) in arr.enumerated(){
let s = str.components(separatedBy: " ")
arrOnlyDates.append(s[0])
}
print(arrOnlyDates)
Зачем использовать enumerated(), если вы отбрасываете только смещение?
Вы можете просто получить массив дат следующим образом:
let dateArray = ["2019-07-12 12:43:00", "2019-07-09 12:57:35", "2019-07-09 12:04:33", "2019-07-05 14:32:32", "2019-07-04 17:50:23", "2019-07-02 12:12:30", "2019-07-01 18:09:28"]
let onlyDatesArray = dateArray.compactMap({ $0.components(separatedBy: " ")[0] })
print("only dates -> \(onlyDatesArray)")
let dateStrings = ["2019-07-12 12:43:00", "2019-07-09 12:57:35", "2019-07-09 12:04:33", "2019-07-05 14:32:32", "2019-07-04 17:50:23", "2019-07-02 12:12:30", "2019-07-01 18:09:28"]
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dates = dateStrings.compactMap { dateFormatter.date(from: $0) }
dateFormatter.dateFormat = "yyyy-MM-dd"
let formatedDateStrings = dates.compactMap { dateFormatter.string(from: $0) }
Вы можете просто использовать комбинацию compactMap(_:) и components(separatedBy:), например:
let arr = ["2019-07-12 12:43:00", "2019-07-09 12:57:35", "2019-07-09 12:04:33", "2019-07-05 14:32:32", "2019-07-04 17:50:23", "2019-07-02 12:12:30", "2019-07-01 18:09:28"]
let result = arr.compactMap({ $0.components(separatedBy: " ").first })
Поскольку формат даты не меняется, просто удалите первые 10 символов из каждой строки.
let dates = ["2019-07-12 12:43:00", "2019-07-09 12:57:35", "2019-07-09 12:04:33", "2019-07-05 14:32:32", "2019-07-04 17:50:23", "2019-07-02 12:12:30", "2019-07-01 18:09:28"]
let datesWithoutTime = dates.map{ String($0.prefix(10)) }
Это все струны? У них есть фиксированный формат? Можете ли вы просто взять первые 10 символов? – Вы наверняка что-то пробовали, не стесняйтесь показать свою попытку!