You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 12:59:59