0Pricing
Swift Academy · 课时

格式化日期

使用现代格式化 API 显示日期。

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

格式化日期

原始 Date 值不便于人类阅读。Swift 的现代 FormatStyle API 可以简洁地将它们转换为本地化字符串。

formatted() 方法

对日期调用 .formatted() 会根据用户的区域设置生成合理的默认字符串。

import Foundation

let now = Date()
let text = now.formatted()
print("Produced a string: \(!text.isEmpty)")

Date.FormatStyle

传入 Date.FormatStyle 可以控制显示哪些部分,并独立选择日期和时间样式。

import Foundation

let now = Date()
let s = now.formatted(date: .abbreviated, time: .omitted)
print("Has date only: \(!s.isEmpty)")

日期和时间样式

date: 和 time: 参数接受 .full、.long、.abbreviated、.numeric 或 .omitted。

import Foundation

let now = Date()
let full = now.formatted(date: .complete, time: .shortened)
print(!full.isEmpty)

使用组成部分进行自定义

.dateTime 样式可以让您精确组合所需的字段,例如 .year().month().day()。

import Foundation

let now = Date()
let s = now.formatted(.dateTime.year().month().day())
print("Custom fields: \(!s.isEmpty)")

选择字段宽度

每个组成部分都接受选项,例如 .month(.wide) 会显示完整名称,而 .month(.twoDigits) 会显示数字形式。

import Foundation

let now = Date()
let s = now.formatted(.dateTime.month(.wide).year())
print(!s.isEmpty)

仅显示时间

当日期已由上下文确定时,您可以只组合时间字段,例如 .hour().minute()。

import Foundation

let now = Date()
let t = now.formatted(.dateTime.hour().minute())
print("Time string: \(!t.isEmpty)")

相对格式化

RelativeFormatStyle 会相对于当前时间生成“2 小时后”或“昨天”等短语。

import Foundation

let soon = Date().addingTimeInterval(3600)
let rel = soon.formatted(.relative(presentation: .named))
print("Relative phrase produced: \(!rel.isEmpty)")

ISO 8601

如需机器可读的输出,请使用 .formatted(.iso8601),这是 API 通用的标准交换格式。

import Foundation

let now = Date()
let iso = now.formatted(.iso8601)
print("Contains T separator: \(iso.contains("T"))")

将字符串解析回来

格式样式是可逆的:您可以使用匹配的策略将字符串解析为 Date。

import Foundation

let input = "2024-05-30T12:00:00Z"
if let date = try? Date(input, strategy: .iso8601) {
    print("Parsed: \(date.timeIntervalSince1970 > 0)")
}

FormatStyle 与 DateFormatter

新的 FormatStyle API 具有类型安全性,而且比旧的 DateFormatter 更易编写;在新代码中请优先使用它。

import Foundation

let now = Date()
print(now.formatted(date: .long, time: .omitted).isEmpty == false)

快速检查

哪个调用会显示日期但省略时间?

回顾

FormatStyle API 使用 .formatted() 格式化日期,支持配置 date:/time: 样式、可组合的 .dateTime 字段、相对短语以及 ISO 8601。它支持解析还原,并且优先于 DateFormatter 使用。下一步:时区和区域设置。

常见问题解答

「格式化日期」课时是免费的吗?

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

「格式化日期」这节课中我会学到什么?

使用现代格式化 API 显示日期。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

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

「格式化日期」课时需要多长时间?

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

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

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

此课程中的所有课时

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