gpt4 book ai didi

swift - 排序时间字符串 (HH :mm) in ascending order in Swift

转载 作者:行者123 更新时间:2023-11-28 10:39:59 25 4
gpt4 key购买 nike

我想在 Swift 4 中从 00:00 -> 23:59 按升序对时间数组进行排序。我的应用程序没有任何对日历的引用,因为它用于使用外部硬件时钟注册闹钟时间作为一个非常基本的闹钟,从 00:00 -> 23:59 开始,然后结束。

不确定这是否是最好的方法,但我已经根据 Sort Objects in Array by date 尝试了以下代码但我不能只用时间让它工作。 (date) 对象初始化失败。它不喜欢初始示例中的 (dateStyle) 和 (timeStyle) 更改。代码如下:

let testArray = ["23:59", "01:23", "18:23", "04:42", "00:00"]
var convertedArray: [Date] = []

var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .short

for dat in testArray {
let date = dateFormatter.date(from: dat)
if let date = date {
convertedArray.append(date)
}
}

var ready = convertedArray.sorted(by: { $0.compare($1) == .orderedAscending })

print(ready)

打印函数工作时应按以下顺序打印排序的数组:

[00:00, 01:23, 04:42, 18:23, 23:59]

有人有什么想法吗?

最佳答案

您不需要将字符串转换为日期。只需将字符串排序为数字即可。

let testArray = ["23:59", "01:23", "18:23", "04:42", "00:00"]
let sortedArray = testArray.sorted { $0.localizedStandardCompare($1) == .orderedAscending }
print(sortedArray)

输出:

["00:00", "01:23", "04:42", "18:23", "23:59"]

事实证明,由于您的每个时间字符串都采用很好的固定格式 HH:mm,您甚至不需要使用 localizedStandardCompare。您可以通过以下方式获得所需的结果:

let sortedArray = testArray.sorted()

这只适用于您只有数字并且数字用前导零填充的情况。如果其中任何一种情况都不存在,您将需要第一个选项。

关于swift - 排序时间字符串 (HH :mm) in ascending order in Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51071737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com