我有一个这样的数组:
arrayTimes = ["16:00", "16:30", "17:00", "17:30", "18:00", "18:30"]
我想把数组从24小时转换为12小时。这是迄今为止我所掌握的转换数组中第一个数字的方法。我错过了一些东西,但我做不到。
func convertTimes(){
for twelve in arrayTimes{
var two = arrayTimes[0]
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "H:mm"
let date12 = dateFormatter.dateFromString(two)!
dateFormatter.dateFormat = "h:mm a"
let date22 = dateFormatter.stringFromDate(date12)
print(date22)
print("output \(twelve)")
}
}
convertTimes()
最佳答案
您没有为转换使用正确的值:您的two
变量始终是数组的第一项。
只需使用twelve
即可,它表示循环时数组中的每个项:
for twelve in arrayTimes {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "H:mm"
let date12 = dateFormatter.dateFromString(twelve)!
dateFormatter.dateFormat = "h:mm a"
let date22 = dateFormatter.stringFromDate(date12)
print(date22)
print("output \(twelve)")
}
另外,只是一个提示:不需要每次循环迭代时都创建一个新的格式化程序,您只能在循环之外声明一次格式化程序。另外,请注意强制展开选项,我更喜欢使用
if let
或任何其他已知的方法,如guard
。带
if let
的示例:let dateFormatter = NSDateFormatter()
for twelve in arrayTimes {
dateFormatter.dateFormat = "H:mm"
if let date12 = dateFormatter.dateFromString(twelve) {
dateFormatter.dateFormat = "h:mm a"
let date22 = dateFormatter.stringFromDate(date12)
print(date22)
print("output \(twelve)")
} else {
// oops, error while converting the string
}
}