📅  最后修改于: 2023-12-03 15:06:34.326000             🧑  作者: Mango
在开发中,我们可能需要从某些字符串中获取日期信息,例如从 API 返回的 JSON 数据中读取日期信息。在 Swift 中,有几种方式可以从字符串中快速获取日期。本文将介绍一些最常用的方法。
DateFormatter 是 Foundation 框架中的一个类,它可以将日期字符串转化为日期对象,也可以将日期对象转化为字符串。下面是使用 DateFormatter 的示例代码:
let dateString = "2022-09-30"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let date = dateFormatter.date(from: dateString) {
print(date)
}
在上面的代码中,我们首先创建了一个日期字符串,然后创建了一个 DateFormatter 对象,并将其 dateFormat 属性设置为 "yyyy-MM-dd",这是日期字符串的格式。接下来,我们使用 date(from:) 方法将日期字符串转化为日期对象,并将其输出到控制台上。
如果我们从 API 返回的 JSON 数据中读取日期信息,那么日期格式可能是 ISO8601 格式。在这种情况下,我们可以使用 Foundation 框架中的 ISO8601DateFormatter 类来解析日期字符串。下面是一个示例代码:
let dateString = "2022-09-30T16:45:00Z"
let dateFormatter = ISO8601DateFormatter()
if let date = dateFormatter.date(from: dateString) {
print(date)
}
在上面的代码中,我们创建了一个 ISO8601DateFormatter 对象,并使用其 date(from:) 方法将日期字符串转化为日期对象。需要注意的是,ISO8601DateFormatter 类在 iOS 11.0 及以上版本中才可用。
如果我们需要从日期字符串中获取日期的具体成分,例如年、月、日、时、分、秒等,我们可以使用 Foundation 框架中的 Calendar 和 DateComponents 类。下面是一个示例代码:
let dateString = "2022-09-30 16:45:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
if let date = dateFormatter.date(from: dateString) {
let calendar = Calendar.current
let year = calendar.component(.year, from: date)
let month = calendar.component(.month, from: date)
let day = calendar.component(.day, from: date)
let hour = calendar.component(.hour, from: date)
let minute = calendar.component(.minute, from: date)
let second = calendar.component(.second, from: date)
print("\(year)-\(month)-\(day) \(hour):\(minute):\(second)")
}
在上面的代码中,我们首先创建了一个日期字符串和一个 DateFormatter 对象,然后使用其 date(from:) 方法将日期字符串转化为日期对象。接下来,我们创建一个 Calendar 对象,并使用其 component(_:from:) 方法获取日期对象的各个成分,并将其输出到控制台上。
本文介绍了从可用字符串中快速获取日期的三种常见方法:使用 DateFormatter、使用 ISO8601DateFormatter 和使用 Calendar 和 DateComponents。根据不同的需求,我们可以选择合适的方法来解析日期字符串。