gpt4 book ai didi

swift - 如何将日期字符串数组转换为日期对象数组,Swift

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

看了类似的SO问题,发现Swift中没有答案,有很多专门针对日期格式化但没有与迭代结合的答案。

我有一个日期字符串数组,如下所示:

let dateStrings = ["2016-12-22T08:00:00-08:00", "2016-12-22T08:15:00-08:00", "2016-12-22T08:30:00-08:00"]

我想将它们转换为如下所示的本地日期对象数组

var dateObjects = [2016-12-22 21:30:00 +0530, 2016-12-22 21:45:00 +0530, 2016-12-22 22:00:00 +0530]

我尝试遍历日期字符串数组,但出现此错误:

"fatal error: unexpectedly found nil while unwrapping an Optional value"

所以我尝试了可选绑定(bind)但没有成功。请告诉我哪里可能出错。

var dateObjects = [Date]()
let dateFormatter = DateFormatter()
for date in dateStrings{
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
let dateObject = dateFormatter.date(from: date)
self.dateObjects.append(dateObject!) // ERROR LINE
}

当我尝试使用可选绑定(bind)时,它会通过 else 语句打印“无法转换为日期对象”

for date in dateStrings{
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
if let dateObject = dateFormatter.date(from: date){
self.dateObjects.append(dateObject!) // ERROR LINE
}
else{
print("Unable to convert to date object")
}
}

最佳答案

在第二种情况下,你强制包装非可选值,没有必要,你正在用未声明为实例属性的 dateObjects var 编写 self,你也可以简单地使用 flatMap 以减少您的代码并从 String 数组创建 Date 数组。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
let dateObjects = dateStrings.flatMap { dateFormatter.date(from: $0) }

关于swift - 如何将日期字符串数组转换为日期对象数组,Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41276607/

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