在 Swift 3.1 中使用 DateFormatter 正确构造 dateFormat 以解析时间
Proper construction of dateFormat to parse time using DateFormatter in Swift 3.1
我在构建 dateFormat 时使用了错误的文档来解析以预定义格式出现的时间。 maddy(下)为正确的文档提供了 link。
以下是我使用错误格式时发生的情况:
var idf = DateFormatter()
idf.locale = Locale(identifier: "en_US")
idf.dateStyle = .none
idf.dateFormat = "hh:MM:SSa"
// Of the variables defined here, the only one that doesn't cause an error
// is the last one:
var sMidnight: String = "12:00:00AM"
var sEarly: String = "12:40:22AM"
var sMorning: String = "6:00:00AM"
var sNoon: String = "12:00:00PM"
var sAfternoon: String = "12:30:22PM"
var sEvening: String = "7:05:45PM"
// Put any of the variables besides sEvening here and you get a crash.
// "fatal error: unexpectedly found nil while unwrapping an Optional value"
var date: Date = idf.date(from: sEvening)!
print(idf.string(from: date)) // prints 07:05:45 PM
MM
用于 2 位数的月份编号。 SS
代表小数秒。请查看与格式说明符相关的 the documentation。
你想要:
"h:mm:ssa"
适合您的格式。
我在构建 dateFormat 时使用了错误的文档来解析以预定义格式出现的时间。 maddy(下)为正确的文档提供了 link。
以下是我使用错误格式时发生的情况:
var idf = DateFormatter()
idf.locale = Locale(identifier: "en_US")
idf.dateStyle = .none
idf.dateFormat = "hh:MM:SSa"
// Of the variables defined here, the only one that doesn't cause an error
// is the last one:
var sMidnight: String = "12:00:00AM"
var sEarly: String = "12:40:22AM"
var sMorning: String = "6:00:00AM"
var sNoon: String = "12:00:00PM"
var sAfternoon: String = "12:30:22PM"
var sEvening: String = "7:05:45PM"
// Put any of the variables besides sEvening here and you get a crash.
// "fatal error: unexpectedly found nil while unwrapping an Optional value"
var date: Date = idf.date(from: sEvening)!
print(idf.string(from: date)) // prints 07:05:45 PM
MM
用于 2 位数的月份编号。 SS
代表小数秒。请查看与格式说明符相关的 the documentation。
你想要:
"h:mm:ssa"
适合您的格式。