如何将字符串日期转换为 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 对象。

更新于: 2023年4月24日

683 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告