Swift 中的日期和时间处理:从 A 到 Z

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift 中日期和时间处理简介

日期和时间处理是开发 iOS 和 macOS 应用程序时的关键任务之一。从简单显示当前日期到复杂的时间间隔计算和时区管理,Swift 提供了强大且灵活的工具集。在本文中,我们将介绍主要的类和结构体:Date、DateFormatter、Calendar、DateComponents 和 TimeInterval。您将学习如何在实际操作中创建、格式化、比较和操作日期。



主要类和结构体

在 Swift 中,处理日期使用几个基础类型。我们来逐一了解它们。

  • Date — 表示特定时间点的结构体。它不依赖于日历或时区。
  • DateFormatter — 用于在日期和字符串之间进行转换的类。
  • Calendar — 描述日历(公历、佛教历等)并提供处理日期组件方法的结构体。
  • DateComponents — 用于存储日期各个组件(年、月、日、时、分等)的结构体。
  • TimeInterval — 表示秒数的类型(Double)。


使用 Date 和 DateFormatter

我们从最简单的开始:获取当前日期并将其显示给用户。



获取当前日期

import Foundation

let currentDate = Date()print("当前日期和时间:\\(currentDate)")// 输出:当前日期和时间:2025-04-05 12:30:00 +0000


格式化日期

为了让日期看起来更熟悉,我们使用 DateFormatter:

let formatter = DateFormatter()formatter.dateFormat = "dd.MM.yyyy HH:mm"let dateString = formatter.string(from: currentDate)print("格式化后的日期:\\(dateString)")// 输出:格式化后的日期:05.04.2025 12:30


将字符串解析为日期

let dateString = "2025-04-05 14:00"formatter.dateFormat = "yyyy-MM-dd HH:mm"if let parsedDate = formatter.date(from: dateString) {    print("解析后的日期:\\(parsedDate)")} else {    print("解析错误")}

重要提示:始终检查 date(from:) 是否返回 nil,否则应用程序可能会崩溃。



通过 Calendar 和 DateComponents 操作日期

经常需要添加天数、月数或计算日期之间的差值。这时 Calendar 就派上用场了。



添加和减去时间

let calendar = Calendar.currentlet oneWeekLater = calendar.date(byAdding: .day, value: 7, to: currentDate)!let oneMonthAgo = calendar.date(byAdding: .month, value: -1, to: currentDate)!

print("一周后:\\(formatter.string(from: oneWeekLater))")print("一个月前:\\(formatter.string(from: oneMonthAgo))")


提取日期组件

let components = calendar.dateComponents([.year, .month, .day, .hour], from: currentDate)if let year = components.year, let month = components.month {    print("今天:\\(year)-\\(month)")}


从组件创建日期

var newComponents = DateComponents()newComponents.year = 2025newComponents.month = 12newComponents.day = 25newComponents.hour = 10newComponents.minute = 0

if let christmas = calendar.date(from: newComponents) { print("圣诞节:\\(formatter.string(from: christmas))")}


日期比较和使用 TimeInterval

Swift 可以轻松比较日期并计算时间间隔。



日期比较

let now = Date()let futureDate = calendar.date(byAdding: .day, value: 10, to: now)!

if futureDate > now { print("

博客

书籍推荐