arrays - 将日期数组从最近到最旧排序,同时更改其他数组以匹配顺序

标签 arrays swift date

我有一个日期数组和另外两个字符串数组。我试图弄清楚如何将日期数组从最近到最旧重新排序。此外,当更改日期数组的顺序时,其他两个数组需要更改为与日期数组相同的顺序。

这是数组

[2019-01-15 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-15 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2018-12-25 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-14 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-01-22 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2019-01-21 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-02-06 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-16 05:00:00 +0000, 2019-02-08 05:00:00 +0000, 2018-12-24 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2019-01-08 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-25 05:00:00 +0000, 2019-01-18 05:00:00 +0000, 2018-12-19 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-23 05:00:00 +0000, 2019-02-05 05:00:00 +0000, 2019-01-24 05:00:00 +0000, 2019-02-04 05:00:00 +0000, 2019-01-17 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-28 05:00:00 +0000, 2019-02-11 05:00:00 +0000, 2019-01-29 05:00:00 +0000, 2019-02-07 05:00:00 +0000, 2019-01-30 05:00:00 +0000, 2019-01-11 05:00:00 +0000, 2019-01-31 05:00:00 +0000, 2018-12-20 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-01-10 05:00:00 +0000, 2019-02-01 05:00:00 +0000, 2019-01-09 05:00:00 +0000, 2018-12-21 05:00:00 +0000, 2019-01-15 05:00:00 +0000]

["5.2 hrs", "5.02 hrs", "5.77 hrs", "6.72 hrs", "5.88 hrs", "6.75 hrs", "6.42 hrs", "6.08 hrs", "6.93 hrs", "6.75 hrs", "6.92 hrs", "6.75 hrs", "6.6 hrs", "6.75 hrs", "6.75 hrs", "5.88 hrs", "6.27 hrs", "6.32 hrs", "4.52 hrs", "5.2 hrs", "6.13 hrs", "6.38 hrs", "6.92 hrs", "6.92 hrs", "5.88 hrs", "6.13 hrs", "6.75 hrs", "6.25 hrs", "6.07 hrs", "6.92 hrs", "7.2 hrs", "6.27 hrs", "5.77 hrs", "6.75 hrs", "6.0 hrs", "5.77 hrs", "6.92 hrs", "6.37 hrs", "6.93 hrs", "6.25 hrs", "6.42 hrs", "3.17 hrs", "4.52 hrs", "6.0 hrs", "6.8 hrs", "7.2 hrs", "6.6 hrs", "6.37 hrs", "6.75 hrs", "6.93 hrs", "6.42 hrs", "6.08 hrs", "6.38 hrs", "6.75 hrs", "6.18 hrs", "6.6 hrs", "7.2 hrs", "4.52 hrs", "6.72 hrs", "6.25 hrs", "6.42 hrs", "5.02 hrs", "6.32 hrs", "6.18 hrs", "6.13 hrs", "6.08 hrs", "6.92 hrs", "3.17 hrs", "6.07 hrs", "3.17 hrs", "6.37 hrs", "6.0 hrs", "6.07 hrs", "6.18 hrs", "6.55 hrs", "6.8 hrs", "6.42 hrs", "6.8 hrs", "6.32 hrs", "5.02 hrs", "6.75 hrs", "6.38 hrs", "6.75 hrs", "6.75 hrs", "6.55 hrs", "6.55 hrs", "6.42 hrs", "6.72 hrs", "6.27 hrs", "5.2 hrs", "5.2 hrs", "5.02 hrs", "5.77 hrs", "6.72 hrs", "5.88 hrs", "6.75 hrs", "6.42 hrs", "6.08 hrs", "6.93 hrs", "6.75 hrs", "6.92 hrs", "6.75 hrs", "6.6 hrs", "6.75 hrs", "6.75 hrs", "5.88 hrs", "6.27 hrs", "6.32 hrs", "4.52 hrs", "5.2 hrs", "6.13 hrs", "6.38 hrs", "6.92 hrs", "6.92 hrs", "5.88 hrs", "6.13 hrs", "6.75 hrs", "6.25 hrs", "6.07 hrs", "6.92 hrs", "7.2 hrs", "6.27 hrs", "5.77 hrs", "6.75 hrs", "6.0 hrs", "5.77 hrs", "6.92 hrs", "6.37 hrs", "6.93 hrs", "6.25 hrs", "6.42 hrs", "3.17 hrs", "4.52 hrs", "6.0 hrs", "6.8 hrs", "7.2 hrs", "6.6 hrs", "6.37 hrs", "6.75 hrs", "6.93 hrs", "6.42 hrs", "6.08 hrs", "6.38 hrs", "6.75 hrs", "6.18 hrs", "6.6 hrs", "7.2 hrs", "4.52 hrs", "6.72 hrs", "6.25 hrs", "6.42 hrs", "5.02 hrs", "6.32 hrs", "6.18 hrs", "6.13 hrs", "6.08 hrs", "6.92 hrs", "3.17 hrs", "6.07 hrs", "3.17 hrs", "6.37 hrs", "6.0 hrs", "6.07 hrs", "6.18 hrs", "6.55 hrs", "6.8 hrs", "6.42 hrs", "6.8 hrs", "6.32 hrs", "5.02 hrs", "6.75 hrs", "6.38 hrs", "6.75 hrs", "6.75 hrs", "6.55 hrs", "6.55 hrs", "6.42 hrs", "6.72 hrs", "6.27 hrs", "5.2 hrs"]

["06:45 AM", "05:33 AM", "07:10 AM", "07:19 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:24 AM", "07:20 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:41 AM", "06:50 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:19 AM", "07:10 AM", "06:50 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:10 AM", "06:50 AM", "06:45 AM", "06:50 AM", "07:10 AM", "07:10 AM", "07:24 AM", "07:10 AM", "07:24 AM", "07:00 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:19 AM", "07:10 AM", "06:45 AM", "06:45 AM", "05:33 AM", "07:10 AM", "07:19 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:41 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:45 AM", "07:24 AM", "07:20 AM", "07:10 AM", "06:50 AM", "07:10 AM", "07:41 AM", "06:50 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:20 AM", "07:10 AM", "07:19 AM", "07:10 AM", "06:50 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:00 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:10 AM", "06:50 AM", "06:45 AM", "06:50 AM", "07:10 AM", "07:10 AM", "07:24 AM", "07:10 AM", "07:24 AM", "07:00 AM", "05:33 AM", "07:00 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "07:10 AM", "06:50 AM", "07:19 AM", "07:10 AM", "06:45 AM"]

日间类(class)

class Day {
    var date: Date
    var sleep: String
    var timeUploaded: String

    init(date: Date, sleep: String, timeUploaded: String) {
        self.date = date
        self.sleep = sleep
        self.timeUploaded = timeUploaded
    }
}

这是从 firebase 读取数据并将其放入对象的代码

var days = [Day]()
    var dates: [Date] = []
    var sleeps: [String]  = []
    var timeUploadeds: [String] = []


    func readSleepAnalysis(){
        let userID = Auth.auth().currentUser?.uid

        self.ref.child("Patient").child(userID!).child("Sleep Analysis").observeSingleEvent(of: .value) { (snapshot) in
            guard let days = snapshot.value as? [String: Any] else { return }

            for (_,value) in days.enumerated() {
                guard let dayDict = value.value as? [String: String] else { return }
                let date = dayDict["Date"] ?? ""
                let sleep = dayDict["Sleep"] ?? ""
                let timeUploaded = dayDict["Time Uploaded"] ?? ""



                let isoDate = date
                let dateFormatter = DateFormatter()
                dateFormatter.dateFormat = "MM-dd-yyyy"
                dateFormatter.locale = Locale(identifier: "en_US_POSIX") // set locale to reliable US_POSIX
                let dated = dateFormatter.date(from:isoDate)!
                let calendar = Calendar.current
                let components = calendar.dateComponents([.month, .day, .year], from: dated)
                let finalDate = calendar.date(from:components)


                print(finalDate)
                let day = Day(date: finalDate!, sleep: sleep, timeUploaded: timeUploaded)
                self.days.append(day)

                self.dates.append(finalDate!)
                self.sleeps.append(sleep)
                self.timeUploadeds.append(timeUploaded)
            }
            print(days)




    }

    }

最佳答案

查看您的代码,错误在于有额外的数组(日期、 sleep 和 timeUploadeds)。 days 数组是您需要的一切。如果你想订购它,只需对天数进行排序:

let sortedDays = days.sorted(by: { $0.date < $1.date} )

然后您可以使用 sortedDays 做任何您需要的事情。如果对于某些特定问题,您需要仅包含日期或 sleep 的列表,您可以随时使用 map 获取:

let dates = sortedDays.map { $0.date }

关于arrays - 将日期数组从最近到最旧排序,同时更改其他数组以匹配顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54695970/

相关文章:

php - 如何使用 PHP 获取选定日期的星期几?

java - 使用 Hibernate/JPA 和 JDK Date 的不需要的自动时区转换

JavaScript 数组 - 选择具有偶数值的元素

php - 将数组内爆为字符串以创建 sql 查询

javascript - 尝试在数组中查找序列长度的问题

Javascript:Array.prototype 方法是否适用于 Float32 多维数组

php - 如何将 POST Json 和图像发送到 php alamofire

multithreading - 如何在 Swift 中创建非原子全局或静态变量

ios - 如何在 SwiftUI 中点击 ActionSheet.Button 后呈现 View ?

c# - 两个 DateTimes C# 之间的区别?