- première page
- Liste de blogs
- Article détaillé
时间转换与时间戳的实用指南
星
星尘观点
timestamp
time convert
2025-09-17

Articles récents
partager:
iOS时间库的使用指南

Foundation框架中的Date
iOS开发主要使用Foundation框架的Date类处理时间。Date表示自2001年1月1日以来的秒数,精度达到毫秒级。创建当前时间很简单:
let currentDate = Date()
Date对象存储的是UTC时间,不受时区影响。要显示给用户时,需要转换为本地时间。
日期格式化
使用DateFormatter进行日期与字符串的相互转换:
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateString = formatter.string(from: Date())
常见格式符号:
- yyyy:4位数年份
- MM:月份
- dd:日期
- HH:24小时制小时
- mm:分钟
- ss:秒
时间计算
Calendar类提供丰富的时间计算方法:
let calendar = Calendar.current
let tomorrow = calendar.date(byAdding: .day, value: 1, to: Date())
可以计算日期间隔:
let components = calendar.dateComponents([.day], from: startDate, to: endDate)
let daysBetween = components.day
时区处理
正确处理时区很重要:
formatter.timeZone = TimeZone(identifier: "Asia/Shanghai")
获取系统当前时区:
let localTimeZone = TimeZone.current
性能优化
频繁创建DateFormatter会影响性能。最佳实践是复用实例:
// 全局或静态变量
static let sharedFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
return formatter
}()
时间戳转换
iOS使用TimeInterval类型表示时间戳:
// 获取当前时间戳
let timestamp = Date().timeIntervalSince1970
// 时间戳转Date
let date = Date(timeIntervalSince1970: timestamp)
注意事项
- 日期格式字符串区分大小写
- 多线程环境下DateFormatter不是线程安全的
- 用户可能更改设备的时区设置
- 夏令时转换需要特殊处理


