ios - 如何在 Swift 中将时间/日期数组从最旧到最新排序?

标签 ios swift nsdate

我有一个日期/时间的数组。 (“2015 年 8 月 28 日,下午 2:38”)我正在尝试按从最新到最旧的日期/时间进行排序。最简单、最有效的方法是什么?

我正在考虑执行一个 for in 循环,并使用一个 if 语句 检查它是在当前项之前还是之后。但我确信有更好、更有效的方法。

如何将时间/日期数组从最旧到最新排序? (如果您需要我有的代码,我可以发布它。

最佳答案

Array 有一个内置方法 sort,它允许您提供一个闭包来对其中的对象进行排序。假设您的变量名为 dates,您可以对其中的 NSDate 进行排序,如下所示:

dates.sort { (a, b) -> Bool in
    a.earlierDate(b) == a
}

sort 方法反复要求您比较两个日期,询问您要先订购哪个日期。您可以通过使用 NSDateearlierDate 方法来查找最先出现的日期来完成此操作。

注意:如果您的数组实际上是由日期字符串而不是 NSDate 组成,我建议您首先将它们转换为 NSDate

关于ios - 如何在 Swift 中将时间/日期数组从最旧到最新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32280197/

相关文章:

ios - 根据在不同的 TableView Controller 中单击的内容转至 TableView Controller

ios - UITableView 在激活和停用 UISearchController 时在位置之间跳转

ios - 如何将 “downcast” 的[NSManageObject]数组添加到所选实体中?

ios - 检查日期是否早于当前日期(Swift)

objective-c - 不使用 NSDateFormatter 将日期转换为字符串

iphone - 当时间为 24 小时格式时,来自 NSString 的 NSDate

ios - GCM iOS 无法转换收到的消息对象

swift - VLCKit 字幕不显示

java - 如何将此代码从 iOS swift 转换为 Android Kotlin

ios - 检查 CKRecords 数组是否包含特定记录