gpt4 book ai didi

swift - 特定对象创建日期和时间

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

我在 for 循环中创建对象,需要一个特定的创建日期和时间,这样我才能知道它们的创建顺序。我还需要保存这个 dateTime 作为 String 并且仍然能够从中获取创建顺序。
这可能吗?

我了解如何在创建对象时获取日期和时间,但在转换为字符串时不够具体。

目前我只有一个小的日期扩展:

extension Date {
func currentDateTimeAsString() -> String {
let date = Date()
let formatter = DateFormatter()
formatter.dateFormat = "HH:mm dd/MM/yyyy"

return formatter.string(from: date)
}
}

但这显然不够准确,而且我认为将时间增加毫秒也不会有太大帮助吗?

我知道有一些方法可以通过向对象添加计数等来解决这个问题,这样我就可以使用它来获取订单,但我知道如果我在将它转换为字符串之前使用 Date 它会正确地排序它,所以有一些信息隐藏在那里,我也需要将其转换为字符串。

最佳答案

你可以把你的对象写成:

struct SomeData: CustomStringConvertible {
let dateTimeStr: String
private static var dateFormatter: DateFormatter {
let formatter = DateFormatter()
formatter.dateFormat = "dd-MMM-yyyy HH:mm:ss.SSS"
return formatter
}
init() {
let creationDate = Date()
dateTimeStr = SomeData.dateFormatter.string(from: creationDate)
}
var creationDate: Date {
return SomeData.dateFormatter.date(from: dateTimeStr)!
}
var description: String {//just to print
return dateTimeStr
}
}

然后在for循环中创建它为:

var objArr = [SomeData]()
for _ in 0...5 {
objArr.append(SomeData())
}
print("\(objArr)")

Output: [18-Oct-2017 12:50:09.684, 18-Oct-2017 12:50:09.690, 18-Oct-2017 12:50:09.692, 18-Oct-2017 12:50:09.696, 18-Oct-2017 12:50:09.699, 18-Oct-2017 12:50:09.704]

如您所见,它们已经按照创建时间排序。

但是你还是想重新排序,像这样:

let sortedObjArr = objArr.sorted(by: { $0.creationDate < $1.creationDate })
print("\(sortedObjArr)")

Output: [18-Oct-2017 12:50:09.684, 18-Oct-2017 12:50:09.690, 18-Oct-2017 12:50:09.692, 18-Oct-2017 12:50:09.696, 18-Oct-2017 12:50:09.699, 18-Oct-2017 12:50:09.704]

如果你想倒序,这样做:

let sortedObjArr = objArr.sorted(by: { $0.creationDate > $1.creationDate })
print("\(sortedObjArr)")

Output: [18-Oct-2017 12:50:09.704, 18-Oct-2017 12:50:09.699, 18-Oct-2017 12:50:09.696, 18-Oct-2017 12:50:09.692, 18-Oct-2017 12:50:09.690, 18-Oct-2017 12:50:09.684]

关于swift - 特定对象创建日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46807970/

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