如何将字符串日期转换为 NSDate?
在 Swift 中,您可以使用 DateFormatter 类将字符串日期转换为日期对象。此类提供日期转换属性和方法。在本文中,我们将看到一些日期转换示例。
DateFormatter 类
Swift 的标准库有一个用于转换日期的类。它可用于将字符串更改为日期对象,反之亦然。为了解析各种格式的日期对象,此类提供属性和方法。
您必须构建 DateFormatter 类的对象才能将字符串转换为日期对象,反之亦然。然后可以使用 dateFormat 属性指定目标格式字符串的日期格式。因此,可以使用 string(from:) 函数将日期对象转换为具有指定格式的字符串。
我们可以创建一个 DateFormatter 实例,将其 dateFormat 属性调整为与输入字符串日期的格式匹配,然后使用日期格式化程序上的 date(from:) 方法,并将输入字符串日期作为参数,将日期的文本表示形式转换为 Date 对象。此方法返回的可选 Date 对象必须使用 if let 子句或其他可选绑定语法仔细解包。
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(from:) 方法。这将返回一个可选的 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(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 对象。