【问题标题】:Add time zone to date picker将时区添加到日期选择器
【发布时间】:2018-04-09 20:27:15
【问题描述】:

如何向日期选择器添加时区?
这是我现在拥有的代码:输出格式:像这样 2018-04-10T04:24:24.443980+08:00

@available(iOS 11.0, *)
    func donePressed() {
        let formatter = ISO8601DateFormatter()
        if #available(iOS 11.0, *) {
            formatter.formatOptions.insert(.withFractionalSeconds)
        } else {
            // Fallback on earlier versions
        }
        let dateString = formatter.string(from: picker.date)
        choreSchedule.text =  "\(dateString)"
    }

【问题讨论】:

  • 你的问题不清楚。你真正想要什么改变?为什么要向用户显示 ISO8601 格式的日期?为什么不以适合用户区域设置的适当人类可读格式显示日期?
  • 问题不清楚@durn你能解释一下吗?

标签: ios swift datepicker


【解决方案1】:

假设您只是尝试从用户系统设置时区,您可以在设置 UIDatePicker(或选择您选择的时区)时使用 TimeZone.current 属性:

let picker = UIDatePicker()
picker.timeZone = .current

或者如果你有一个可变的时区:

func donePressed(timeZone: TimeZone) {
    let formatter = ISO8601DateFormatter()
    if #available(iOS 11.0, *) {
        formatter.formatOptions.insert(.withFractionalSeconds)
    } else {
        // Fallback on earlier versions
    }
    picker.timeZone = timeZone
    let dateString = formatter.string(from: picker.date)
    choreSchedule.text =  "\(dateString)"
}

【讨论】:

  • 你能把这个想法整合到我上面的代码中,这样我就可以投票了
  • 它通常不会出现在上面的代码中,因此集成没有意义。您可以将它放在 formatter.string(from: picker.date) 行的正上方,但我绝不建议这样做,因为每次使用选择器时都要设置它(而不仅仅是一次)。通常,您会在创建日期选择器时设置它(例如,在 let picker = UIDatePicker() 之后)或视图控制器的 viewDidLoad() 中。如果有帮助,我会针对后一种情况调整上述内容。
【解决方案2】:

picker.timeZone = .current 不适合我

formatter.timeZone = .current 会。

对于给定的问题:

func donePressed() {
    let formatter = ISO8601DateFormatter()
    formatter.timeZone = .current
    if #available(iOS 11.0, *) {
        formatter.formatOptions.insert(.withFractionalSeconds)
    } else {
        // Fallback on earlier versions
    }
    let dateString = formatter.string(from: picker.date)
    choreSchedule.text =  "\(dateString)"
}

另外,为了设置其他时区,您可以将formatter.timeZone = .current 替换为formatter.timeZone = TimeZone(identifier: "EST")

标识符“EST”是特定时区的缩写。对于可用的时区列表,您可以尝试:

print(TimeZone.abbreviationDictionary)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2020-12-17
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多