SwiftUI中如何将选中的本地时间转换为祖鲁时间(Zulu Time)
解决本地时间转祖鲁时间(UTC)的SwiftUI实现
你不需要手动计算时区差,直接用DateFormatter设置UTC时区就能自动完成转换,以下是修改后的完整代码:
struct DatePickerView: View { @State var startTime: Date = .now @State var zuluTime = "" // 定义UTC时间格式化器 private let utcDateFormatter: DateFormatter = { let formatter = DateFormatter() formatter.timeZone = TimeZone(identifier: "UTC") formatter.dateFormat = "HH:mm" formatter.locale = Locale(identifier: "da") // 保持和本地时间一致的区域设置 return formatter }() var body: some View { VStack { DatePicker("_", selection: $startTime, displayedComponents: .hourAndMinute) .labelsHidden() Text(zuluTime) } .environment(\.locale, .init(identifier: "da")) .onChange(of: startTime) { newDate in // 每次选择的时间变化时,更新祖鲁时间文本 zuluTime = utcDateFormatter.string(from: newDate) } .onAppear { // 初始化时显示当前时间的祖鲁时间 zuluTime = utcDateFormatter.string(from: startTime) } } }
关键说明:
- 自动时区转换:通过给
DateFormatter设置timeZone = TimeZone(identifier: "UTC"),系统会自动处理本地时间到祖鲁时间的转换,无需手动加减小时,能规避夏令时等时区规则带来的错误。 - 实时更新:用
onChange(of: startTime)监听日期选择器的变化,实时同步祖鲁时间显示;onAppear确保页面加载时就展示正确的初始祖鲁时间。 - 命名规范:将原结构体名
datepicker改为DatePickerView,符合Swift大驼峰命名规范。
内容的提问来源于stack exchange,提问作者IvanDC
相关产品推荐
相关产品推荐

