从日期数组中仅删除时间Swift

时间:2019-07-12 11:22:00

标签: ios swift

我从这样的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上显示事件。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:3)

您可以简单地使用 POSTMAN compactMap(_:) 的组合,例如

components(separatedBy:)

答案 1 :(得分:2)

请检查以下代码:

    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)

答案 2 :(得分:2)

您可以像这样简单地获取日期数组:

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)")

答案 3 :(得分:1)

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) }

答案 4 :(得分:1)

由于日期格式不会改变,只需从每个字符串中删除前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)) }