两个UIDatePicker之间的不同间隔时间

Posted

技术标签:

【中文标题】两个UIDatePicker之间的不同间隔时间【英文标题】:Different interval time between two UIDatePicker 【发布时间】:2017-07-29 11:09:57 【问题描述】:

我有两个 UIDatePicker,我想显示从和两次 所以如果我选择时间为 4:30 那么在另一个 UIDatePicker 它将从 6:30 开始显示,所以我想要 2 小时间隔时间

那么任何人都可以对此有任何解决方案吗?

请帮帮我。

  let datePickerView  : UIDatePicker = UIDatePicker()
  datePickerView.datePickerMode = UIDatePickerMode.time
  txtFrom.inputView = datePickerView
  datePickerView.addTarget(self, action: #selector(datePickerValueChanged), for: .valueChanged)




func datePickerValueChanged(sender: UIDatePicker) 
    let timeFormatter = DateFormatter()
    timeFormatter.timeStyle = .short
    txtFrom.text = timeFormatter.string(from: sender.date)
    let datePickerTo  : UIDatePicker = UIDatePicker()
    datePickerTo.datePickerMode = UIDatePickerMode.time
    let date1 = timeFormatter.date(from: txtFrom.text!)
    datePickerTo.minimumDate = date1?.addingTimeInterval(60 * 60 * 2)
    txtTo.inputView = datePickerTo
    datePickerTo.addTarget(self, action: #selector(datePickerValueChangedTO), for: .valueChanged)





func datePickerValueChangedTO(sender: UIDatePicker) 
        if Validate .isEmpty(txtFrom.text) 
            Util.invokeAlertMethod("ReHydration", strBody: "Please Select From Time", delegate: nil)
            return
        
        else
        
            let timeFormatter = DateFormatter()
            timeFormatter.timeStyle = .short
            txtTo.text = timeFormatter.string(from: sender.date)
            let date1 = timeFormatter.date(from: txtFrom.text!)
            let date2 = timeFormatter.date(from:  txtTo.text!)

            let calender:Calendar = Calendar.current
            let components: DateComponents = calender.dateComponents([.hour, .minute ], from: date1!, to: date2!)
            print(components)
            var returnString:String = ""
            print(components.minute!)
            if components.hour! <= 120 && components.minute! <= 60 
                returnString = "Just Now"
            else if components.minute! >= 1
                returnString = String(describing: components.minute) + " min ago"
            else if components.hour! >= 1
                returnString = String(describing: components.hour) + " hour ago"
            

        

【问题讨论】:

【参考方案1】:

是的,您可以使用addingTimeInterval 方法实现此功能。

定义变量来存储第一个日期选择器的日期。

var fromTime: Date?

当您完成从 datePickerView 中选择日期时,将 datePickerView.date 保存到 fromTime 变量中。

之后,为 datePickerTo 设置该 DatePicker 的 minimumDate 属性,如下所示。

datePickerTo.minimumDate = fromTime?.addingTimeInterval(60 * 60 * 2) // 2 hour interval

因此,它将打开比datePickerView 提前2 小时的日期选择器。

希望你能得到你的想法。

【讨论】:

@VimalBosamiya 你能在尝试上述解决方案后更新代码吗? 应该是 datePickerTo.setDate (fromTime?.addingTimeInterval(60 * 60 * 2), animated: false) 应该设置日期属性而不是 minimumDate 属性。 developer.apple.com/documentation/uikit/uidatepicker

以上是关于两个UIDatePicker之间的不同间隔时间的主要内容,如果未能解决你的问题,请参考以下文章

为什么UIDatePicker会填充两个不同的TextField相同的值

请问两个时间点之间的间隔怎么算?

iPad UI 的 JavaScript 模拟(特别是 UIDatePicker 和 UIPicker)

HighCharts 的不同间隔

选择视图 0 时,UIDatePicker 将分钟设置为 1

iPhone 的自定义 UISlider