要字符串转换为Date
对象:
let string = "2017-01-27T18:36:36Z"
let isoFormatter = ISO8601DateFormatter()
let date = isoFormatter.date(from: string)!
或者,如果你需要支持早ISO8601DateFormatter
IOS版本:
let isoFormatter = DateFormatter()
isoFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
isoFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = isoFormatter.date(from: string)!
(要理解为什么我们设置locale
为ISO 8601日期格式,见Apple Technical Q&A 1480)
然后,将其转换成一个用户友好的日期格式,你会使用一个单独的格式化(或使用第二个例子,上面,你可以重新使用的格式,但记得要重置locale
回Locale.current
):
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .medium
let result = formatter.string(from:date)
注意,我建议呈现追溯到在使用这些样式参数给用户而不是dateFormat
字符串,因此它使用适合其区域设置的样式,而不是假设他们想要24小时或不使用和/或使用dd-MM-yyyy
和MM-dd-yyyy
格式。
注意,改变日期格式的格式(例如,更换dateFormat
字符串)是一个相对昂贵的过程,因此,如果您要执行此过程多个日期,不要采取单一DateFormatter
,并不断地改变其dateFormat
或风格反复来回(或更糟糕的是,为每个日期实例化新的格式化程序)。相反,应根据日期格式样式创建一个格式化程序,并尽可能重新使用它的语法。
来源
2017-01-28 08:01:04
Rob
您需要**输入**格式将ISO8601字符串转换为日期和**输出**格式以将日期转换回字符串,另请参阅http://stackoverflow.com/questions/33277970/how -to-convert-string-to-date-to-string-in-swift-ios?rq = 1,不要在Swift中使用'NSString'。 – vadian