首页 > 解决方案 > 如何将 UIDatePicker 设置为始终为 UTC 时间和日期,而忽略夏令时

问题描述

UIDatePicker 我想将 UIDatePicker 设置为始终使用 UTC 时间和日期,忽略任何本地时间和夏令时。在 2019 年 3 月 31 日之后的应用 UIDatePicker 中,如果我在文本字段中设置时间 02:00,它将显示 03:00。

`func createDatePicker()  {
    datePicker = UIDatePicker()
    datePicker?.datePickerMode = .dateAndTime
    datePicker?.timeZone = NSTimeZone(name: "GMT")! as TimeZone

    datePicker?.timeZone = TimeZone(secondsFromGMT: 0)

    datePicker?.setValue(UIColor.white, forKey: "textColor")
    datePicker?.backgroundColor = UIColor.black.withAlphaComponent(0.6)

datePicker?.minimumDate = Date.calculateDate(day: 1, month: 1, year: 2019, hour: 0, minute: 0)
datePicker?.maximumDate = Date.calculateDate(day: 1, month: 1, year: 2020, hour: 0, minute: 0)




    // create toll bar
    let toolBar = UIToolbar()
    toolBar.sizeToFit()
    toolBar.barStyle = .blackOpaque

    //add done botton on this tool bar
    let doneBotton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(doneDateClicked))
    toolBar.setItems([doneBotton], animated: true)
    doneBotton.style = .done
    dateTextField.inputAccessoryView = toolBar


    dateTextField.inputView = datePicker
}`

标签: swiftxcodeuidatepicker

解决方案


您可以使用以下函数来获取您可能需要应用的偏移量以更正夏令时。

datePicker?.timeZone.daylightSavingTimeOffset(for: Date)

返回给定日期的夏令时偏移量。

参数

日期:用于计算的日期。默认值为当前日期。

请参阅 Apple 文档。


推荐阅读