如何将字符串日期转换为 NSDate?
在 Swift 中,您可以使用 DateFormatter 类将字符串日期转换为日期对象。此类提供日期转换属性和方法。在本文中,我们将看到一些日期转换的示例。
DateFormatter 类
Swift 的标准库有一个用于转换日期的类。它可用于将字符串更改为日期对象,反之亦然。为了解析各种格式的日期对象,此类提供了属性和方法。
您必须构建 DateFormatter 类的对象才能将字符串转换为日期对象,反之亦然。然后可以使用 dateFormat 属性指定目标格式字符串的日期格式。因此,string(from:) 函数可用于将日期对象转换为具有指定格式的字符串。
我们可以构造一个 DateFormatter 实例,调整其 dateFormat 属性以匹配输入字符串日期的格式,然后使用日期格式化程序上的 date(from:) 方法,以输入字符串日期作为参数,将日期的文本表示形式转换为 Date 对象。必须使用 if let 子句或其他可选绑定语法仔细解包由此返回的可选 Date 对象。
dateFormat 字符串中使用的格式字符的一些示例包括
yyyy 表示四位数年份
MM 表示两位数月份
dd 表示两位数月份日期
HH 表示 24 小时格式的两位数小时
mm 表示两位数分钟
ss 表示两位数秒
a 表示 AM/PM 指示符
zzz 表示三个字母的时区缩写
Z 表示格式中的时区偏移量+/-HHmm
DateFormatter 对象的 dateFormat 字段是一个字符串,用于指定日期和时间表示的格式。它使用格式字符的混合来定义应包含的任何分隔符或文本,以及应在输出字符串中包含哪些日期和时间部分。
设置将用于转换的语言环境、时区和日历只是 DateFormatter 提供的用于修改日期格式和解析行为的几个附加属性和方法。一般来说,DateFormatter 是一个有用的类,用于在 Swift 中处理日期和时间时管理各种日期格式和标准。
算法
步骤 1 - 创建日期字符串对象
步骤 2 - 创建 DateFormatter 类的实例
步骤 3 - 使用 dateFormat 属性分配日期格式
步骤 4 - 分配时区
步骤 5 - 使用 date(from) 方法将字符串转换为日期对象
步骤 6 - 在控制台上打印日期对象
示例 1
在在此示例中,我们首先创建要转换的日期的字符串表示形式("2022-05-10")。然后,我们创建 DateFormatter 的实例并将其 dateFormat 属性设置为匹配字符串日期格式("yyyy-MM-dd")。最后,我们在日期格式化程序上调用 date(from:) 方法,并将字符串日期作为参数传递。这将返回一个可选的 Date 对象,可以在我们的代码中使用。
import Foundation
let dateString = "2022-05-10"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
print("Date in string: \(dateString)")
print("Date object: \(dateObject)")
}
输出
Date in string: 2022-05-10 Date object: 2022-05-10 00:00:00 +0000
示例 2
在此示例中,我们创建一个 DateFormatter 实例,并将自定义 dateFormat 属性设置为"dd-MM-yyyy HH:mm:ss",这与输入字符串 date 的格式相匹配。然后,我们在日期格式化程序上调用 date(from:) 方法,并将输入字符串 date 作为参数。这将返回一个可选的 Date 对象,我们使用 if let 语句安全地解包该对象。最后,我们打印生成的 Date 对象。
import Foundation
let dateString = "10-05-2022 12:30:45"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
print("String object: \(dateString)")
print("Date object: \(dateObject)")
}
输出
String object: 10-05-2022 12:30:45 Date object: 2022-05-10 12:30:45 +0000
示例 3
在此示例中,我们创建一个 DateFormatter 实例,并将 dateFormat 属性设置为"yyyy-MM-dd'T'HH:mm:ssZZZZZ",该实例将输入字符串日期的格式与时区偏移量相匹配。然后,我们在日期格式化程序上调用 date(from:) 方法,并将输入字符串日期作为参数。
import Foundation
let dateString = "2022-05-10T12:30:45-05:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
print("String object: \(dateString)")
print("Date object: \(dateObject)")
}
输出
String object: 2022-05-10T12:30:45-05:00 Date object: 2022-05-10 17:30:45 +0000
示例 4
在此示例中,我们创建一个 DateFormatter 实例,并将 dateFormat 属性设置为"dd-MMM-yyyy",该实例与输入字符串 date 的格式相匹配,并带有缩写的月份名称。然后,我们使用输入字符串 date 作为参数,在日期格式化程序上调用 date(from:) 方法。
import Foundation
let dateString = "10-May-2022"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MMM-yyyy"
dateFormatter.timeZone = TimeZone(identifier: "UTC")
if let dateObject = dateFormatter.date(from: dateString) {
print("String object: \(dateString)")
print("Date object: \(dateObject)")
}
输出
String object: 10-May-2022 Date object: 2022-05-10 00:00:00 +0000
结论
总之,在 Swift 中将字符串日期转换为 Date 对象需要使用 DateFormatter 实例,并将 dateFormat 属性设置为与输入字符串日期的格式匹配。正确设置 DateFormatter 后,我们可以调用其 date(from:) 方法,将输入字符串日期作为参数来获取可选的 Date 对象。然后,我们需要使用 if let 语句或其他可选绑定语法安全地解包可选的日期,并且可以根据需要使用生成的 Date 对象。有了这些知识,我们可以轻松地在 Swift 代码中将各种字符串日期格式转换为 Date 对象。