Swift Academy · 课时

Date 类型与时间间隔

表示时间点和持续时间。

第 1 / 4 课13 个步骤

Date 类型与时间间隔 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

日期类型

Foundation 的 Date 表示一个独立于任何日历或时区的时间点。在内部,它是一个相对于参考日期的秒数。

创建日期

Date() 会提供当前时刻。每次调用都会返回它执行时的时刻。

import Foundation

let now = Date()
print("Now is a Date value")
print(type(of: now))

时间间隔

TimeInterval 只是以秒为单位的一个 Double 数值。您可以加上或减去时间间隔,让日期向前或向后移动。

import Foundation

let now = Date()
let inOneHour = now.addingTimeInterval(3600)
print(inOneHour > now)

timeIntervalSince

timeIntervalSince(_:) 会以 TimeInterval 的形式返回两个日期之间的秒数。正数表示接收方日期更晚。

import Foundation

let start = Date()
let later = start.addingTimeInterval(120)
let gap = later.timeIntervalSince(start)
print("Gap seconds: \(gap)")

比较日期

Date 遵循 Comparable,因此您可以直接使用 <、> 和 == 对事件进行排序。

import Foundation

let a = Date()
let b = a.addingTimeInterval(10)
print(a < b)
print(a == a)

参考日期

timeIntervalSinceReferenceDate 用于计算自 2001 年 1 月 1 日 UTC 起经过的秒数;timeIntervalSince1970 则使用 Unix 纪元。

import Foundation

let d = Date(timeIntervalSince1970: 0)
print(d.timeIntervalSince1970)

从纪元构造日期

您可以根据 Unix 时间戳构造一个特定的时间点,这在接收服务器传来的时间时很有用。

import Foundation

let epoch = Date(timeIntervalSince1970: 1_700_000_000)
print(epoch.timeIntervalSince1970)

日期之间的距离

Comparable/Strideable 提供的 distance(to:) 方法也可以返回两个日期之间的时间间隔。

import Foundation

let a = Date()
let b = a.addingTimeInterval(45)
print(a.distance(to: b))

过去和未来辅助值

.distantPast 和 .distantFuture 静态值会提供特殊日期,适合作为比较时的默认值。

import Foundation

let now = Date()
print(Date.distantPast < now)
print(Date.distantFuture > now)

测量经过的时间

记录一个开始日期,执行操作,然后通过相减来测量某项操作耗时多少秒。

import Foundation

let start = Date()
var total = 0
for i in 1...1000 { total += i }
let elapsed = Date().timeIntervalSince(start)
print("Sum: \(total)")
print("Elapsed >= 0: \(elapsed >= 0)")

Date 与日历无关

请记住:Date 不包含年份、月份或日期的概念。要提取这些信息,您需要使用日历,这将是下一课的内容。

import Foundation

let now = Date()
// To get the year you must use a Calendar, not Date alone.
print("A Date is just an instant in time.")

快速检查

laterDate.timeIntervalSince(earlierDate) 会返回什么?

回顾

Date 是以秒为单位表示的单个时间点。您可以使用 addingTimeInterval 移动它,使用 timeIntervalSince 测量时间间隔,使用运算符进行比较,并从纪元构造日期。它与日历无关,因此下一课将介绍日历和 DateComponents。

免费开始

用 AI 导师学习 Swift — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
122
课程
409

常见问题解答

「Date 类型与时间间隔」课时是免费的吗?

是的 — 「Date 类型与时间间隔」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「Date 类型与时间间隔」这节课中我会学到什么?

表示时间点和持续时间。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「Date 类型与时间间隔」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Date 类型与时间间隔
  2. Calendar 与 DateComponents
  3. 格式化日期
  4. 时区与区域设置
← 返回 Swift Academy