格式化日期
使用现代格式化 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 反馈 — 无需本地设置。