UIDatePicker 未显示预期时间

UIDatePicker not showing expected time

我对 Swift 和 XCode 很陌生。在 UIDatePicker 中选择时间时,时间似乎总是 17 小时。我在 Apple 文档中找不到任何内容来解释为什么会发生这种情况。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var timePicker: UIDatePicker!

    @IBAction func startButton(_ sender: UIButton) {
        print(timePicker.date)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

}

我在 playground 中尝试代码时遇到了同样的问题。 但是,我想出了一个解决方法并以这种方式实现了它。

var timePicker = UIDatePicker()
var currentTime = timePicker.date
print(timePicker.date.description(with: .current))

我不确定这是否正确,但至少完成了工作。 编码愉快!

尝试设置日期选择器的UIDatePicker.Mode属性。此外,您可以设置 dateFormat 属性 以获取所需格式的日期。

datePicker.datePickerMode = UIDatePicker.Mode.dateAndTime
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .full
dateFormatter.timeStyle = .medium
let selDate = dateFormatter.string(from: datePicker.date)
print(selDate)

如@PJayRushton 的评论中所述,您将打印 UTC 日期。

为了获取您当地的时区,您可以将打印代码修改为:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var timePicker: UIDatePicker!

    @IBAction func startButton(_ sender: UIButton) {
        let dateFormatter = DateFormatter()
        dateFormatter.timeZone = TimeZone.current
        dateFormatter.dateFormat = "HH:mm" // or whatever other format you want
        print(dateFormatter.string(from: timePicker!.date))
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}