如何在 Swift 中创建日期对象?


在 Swift 中,可以使用 Date 类来处理各种日期格式。您可以使用 Date 类来操作和格式化日期对象。还有其他支持的类,如 DateComponents、DateFormatter 等,可以帮助您将日期对象从一种类型格式化成另一种类型。让我们通过一些示例来学习关于日期的知识。

在 Swift 中,您可以使用 Date() 初始化器创建一个 Date 对象,它返回当前日期和时间 -

let currentDate = Date()

从字符串表示形式创建日期对象

您可以使用 DateFormatter 类从日期的字符串表示形式创建一个 Date 对象。

  • 步骤 1 - 创建包含日期和时间字符串表示形式的 dateString 变量,格式为 ISO 8601 格式,并带有时区偏移量。

  • 步骤 2 - 使用 dateFormat 属性创建 dateFormatter 对象,使其与输入字符串的格式相匹配。

  • 步骤 3 - 然后使用 date(from:) 方法将字符串转换为 Date 对象。

  • 步骤 4 - 最后,.date(from:) 方法返回一个可选类型。我们可以使用可选绑定安全地解包该值。

示例

import Foundation
let dateString = "2023-03-21T15:30:00+00:00"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
if let dateObject = dateFormatter.date(from: dateString) {
   print("Date string: \(dateString)")
   print("Date object: \(dateObject)")
}

输出

Date string: 2023-03-21T15:30:00+00:00
Date object: 2023-03-21 15:30:00 +0000

从时间戳创建日期对象

您还可以从时间戳创建 Date 对象,时间戳表示自 1970 年 1 月 1 日(也称为 Unix 纪元)以来的秒数或毫秒数。

示例

import Foundation
let timestampInSeconds = 1647965400
let dateFromTimestampInSeconds = Date(timeIntervalSince1970: TimeInterval(timestampInSeconds))
print("timestampInSeconds: \(timestampInSeconds)")
print("Date object: \(dateFromTimestampInSeconds)")

输出

timestampInSeconds: 1647965400
Date object: 2022-03-22 16:10:00 +0000

在此示例中,timestampInSeconds 变量包含一个 Unix 时间戳,表示 2022-03-22 16:10:00 +0000。使用带有 timeIntervalSince1970 参数的 Date 初始化器从时间戳创建 Date 对象。

通过添加或减去时间间隔创建日期对象

您还可以通过向现有 Date 对象添加或减去时间间隔来创建 Date 对象。

  • 步骤 1 - 创建包含当前日期和时间的 currentDate 变量。

  • 步骤 2 - 使用 addingTimeInterval(_:) 方法通过添加或减去以秒为单位的时间间隔来创建新的 Date 对象。

  • 步骤 3 - 常量 86400 表示一天中的秒数,常量 -3600 表示一小时中的秒数(使用负号表示减去间隔)。

  • 步骤 4 - 将生成的 Date 对象分别存储在 oneDayLater 和 oneHourAgo 变量中。

示例

import Foundation
let currentDate = Date()

// Add 1 day to the current date
let oneDayLater = currentDate.addingTimeInterval(86400)

// Subtract 1 hour from the current date
let oneHourAgo = currentDate.addingTimeInterval(-3600)
print("Current date: \(currentDate)")
print("Date one day later: \(oneDayLater)")
print("Date one hour ago: \(oneHourAgo)")

输出

Current date: 2023-04-04 06:10:43 +0000
Date one day later: 2023-04-05 06:10:43 +0000
Date one hour ago: 2023-04-04 05:10:43 +0000

将日期对象转换为字符串

您可以使用 DateFormatter 将 Date 对象转换为 String。

  • 步骤 1 - 创建使用当前日期和时间初始化的 date 变量。

  • 步骤 2 - 使用指定所需日期和时间格式的格式字符串初始化 dateFormatter 变量。

  • 步骤 3 - 然后使用 DateFormatter 类的 string(from:) 方法将 Date 对象转换为 String。

示例

import Foundation
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let dateString = dateFormatter.string(from: date)
print("Date in string format: \(dateString)")

输出

Date in string format: 04-04-2023

将字符串转换为日期对象

您可以使用 DateFormatter 将 String 转换为 Date 对象。

  • 步骤 1 - 创建使用表示日期和时间的字符串初始化的 dateString 变量。

  • 步骤 2 - 使用与 dateString 格式匹配的格式字符串初始化 dateFormatter 变量。

  • 步骤 3 - 然后使用 DateFormatter 类的 date(from:) 方法将 String 转换为 Date 对象。

示例

import Foundation
let dateString = "2023-03-21"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
if let date = dateFormatter.date(from: dateString) {
   print("Date object: \(date)")
}

输出

Date object: 2023-03-20 18:30:00 +0000

将日期对象转换为时间间隔

您可以将 Date 对象转换为 TimeInterval,TimeInterval 表示自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。

  • 步骤 1 - 创建使用当前日期和时间初始化的 date 变量。

  • 步骤 2 - 然后使用 Date 类的 timeIntervalSince1970 属性将 Date 对象转换为 TimeInterval。

示例

import Foundation
let date = Date()
let timestamp = date.timeIntervalSince1970
print("Timestamp: \(timestamp)")

输出

Timestamp: 1680588818.952563

结论

总之,在 Swift 中创建日期对象可以通过多种方式完成,具体取决于您拥有的数据和所需的输出。您可以根据字符串、单个组件、DateComponents 对象或 TimeInterval 生成 Date 对象。根据您拥有的数据选择合适的方法至关重要,并且要注意处理日期和时间时可能出现的陷阱,例如时区和夏令时。通过了解在 Swift 中创建 Date 对象的不同方法,您可以更轻松地在应用程序中处理日期和时间。

更新于: 2023 年 4 月 24 日

2K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告