swift - 如何将 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
}`
解决方案
您可以使用以下函数来获取您可能需要应用的偏移量以更正夏令时。
datePicker?.timeZone.daylightSavingTimeOffset(for: Date)
返回给定日期的夏令时偏移量。
参数
日期:用于计算的日期。默认值为当前日期。
推荐阅读
- flutter - 如何在颤动中显示发光动画
- python - 为什么在 kaggle 中导入模块时出现错误?
- java - Java:使用 java.util.Random 对象最有效的方法是什么?
- flutter - 如何修复:错误:未能将一些参考推送到 | 创建远程 GitHub 存储库?
- c# - 找不到 VSCode .NET Core SDK
- reactjs - 如何在 nextjs 中切换主 CSS 文件?
- android - 为什么我的简单 RecyclerView 没有在屏幕上显示任何内容?
- ag-grid - ag-grid 中的树过滤
- javascript - 如何在本地环境中测试 fs.readdir
- vega-lite - vega-lite:间隔选择拖放错误