Ios 如果在Swift中为日期选择器设置了间隔,则从日期选择器获取当前时间

Ios 如果在Swift中为日期选择器设置了间隔,则从日期选择器获取当前时间,ios,swift,uidatepicker,Ios,Swift,Uidatepicker,我使用的日期选择器的时间间隔为30分钟。在日期选择器中,它以30分钟的时间间隔正确显示。当我从选择器中拾取值时,我正在获取当前时间。我希望它应该是从选择器中选择的值,而不是当前时间。我使用的是用Swift 4编写的以下代码 func getTime(sender:UIDatePicker) { let dateFormatter = DateFormatter() dateFormatter.timeStyle = DateFormatter.Style.short le

我使用的日期选择器的时间间隔为30分钟。在日期选择器中,它以30分钟的时间间隔正确显示。当我从选择器中拾取值时,我正在获取当前时间。我希望它应该是从选择器中选择的值,而不是当前时间。我使用的是用Swift 4编写的以下代码

func getTime(sender:UIDatePicker)
{
    let dateFormatter = DateFormatter()
    dateFormatter.timeStyle = DateFormatter.Style.short
    let endDate = (sender.date).addingTimeInterval(TimeInterval(30.0 * 60.0))
    let time = dateFormatter.string(from: endDate)
    print(“time”) //getting current time like 8:14 AM , expected should be 8:00 AM
}

我认为这会有帮助

func getTime(sender:UIDatePicker)
{
    var dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "hh:mm:ss a"
    var ouptputTime = dateFormatter.string(from: sender.date)
    print("ouptputTime:-\(ouptputTime)")
}

您可以根据所选内容从日期选择器中获取时间。但是你必须自己把最初的时间四舍五入到下一个间隔小时。您可以看到下面的代码,它将帮助您

在这种方法中,我们将目标添加到
日期选择器中
,以根据我们的选择获取时间,同时也获取初始时间

此函数将计算四舍五入到下一间隔时间的时间

在这些方法中,我们调用另一个函数,该函数将日期转换为所需的格式


谢谢。

调用此
getTime
函数时,日期选择器中显示的是什么时间?这个
getTime
函数什么时候调用?我有点搞不懂你想做什么。您有一个日期选择器,您希望在拾取日期时(例如:上午8:00)显示上午8:30而不是上午8:00@日期选择器中的TungVuDuc以30的间隔正确显示,如8、8:30、9等。假设当前时间为8:14,介于8到8:30之间。我从picker那里选了8个。所以它应该在8点返回。但现在是8点14分。它给出了当前时间,预计是8:00。您认为这有什么帮助?这如何解决问题?这只会更改日期的格式。但是日期的格式没有问题。
override func viewDidLoad() {
    super.viewDidLoad()
    let currentTime = Date()
    let interval = 30
    self.getInitialTime(currentTime: currentTime, interval: interval)
    datePicker.addTarget(self, action: #selector(getTime(sender:)), for: .valueChanged)
}
func getInitialTime(currentTime: Date, interval: Int) {
    var components = Calendar.current.dateComponents([.minute, .hour], from: currentTime)
    let minute = components.minute
    let remainder = ceil(Float(minute!/interval))
    let finalMinutes = Int(remainder * Float(interval)) + interval
    components.setValue(finalMinutes, for: .minute)
    guard let finalTime = Calendar.current.date(from: components) else { return }
    self.getDate(date: finalTime)
}
@objc func getTime(sender: UIDatePicker) {
    self.getDate(date: sender.date)
}

func getDate(date: Date) {
    let dateFormatter = DateFormatter()
    dateFormatter.timeStyle = DateFormatter.Style.short
    dateFormatter.timeZone = TimeZone.current
    let time = dateFormatter.string(from: date)
    print(time)
}