ios - 根据所选日期快速从手动 datePicker 获取时间

标签 ios swift datepicker time-format

enter image description here我有两个字段,称为日期和时间。我正在使用此代码创建日期选择器

var selectedDate : NSDate!
func date_picker2(textField: UITextField)
    {
        var toolbar1:UIToolbar = UIToolbar(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, 40))
        var done:UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target:self, action: Selector("cancelBtnClicked1:"))
        done.tag  = 203
        var cancel:UIBarButtonItem = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("cancelBtnClicked1:"))

        cancel.tag = 202


   var space:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
    toolbar1.items = [cancel,space,done]
    toolbar1.barTintColor = UIColor(red: 23.0/255.0, green: 174.0/255.0, blue: 202.0/255.0, alpha: 1)
    toolbar1.tintColor = UIColor.whiteColor()
    txt_Dob.inputAccessoryView = toolbar1
    txt_birthTime.inputAccessoryView = toolbar1

    datePicker = UIDatePicker(frame: CGRectMake(toolbar1.frame.size.width - 65, 0, 0, 300))
    let currentCalendar = NSCalendar.currentCalendar()

    let dateComponents = NSDateComponents()
    dateComponents.year = -80
    datePicker.maximumDate = NSDate()


    if txt_Dob.isFirstResponder()
    {
        datePicker.datePickerMode = UIDatePickerMode.Date
    }
    if txt_birthTime.isFirstResponder()
    {
        datePicker.datePickerMode = UIDatePickerMode.Time
        println("selectedDate: \(selectedDate)")
        if selectedDate == NSDate(){
            datePicker.maximumDate = NSDate(timeIntervalSinceNow:0)
        }
    }

    datePicker.timeZone = NSTimeZone.localTimeZone()
    datePicker.locale = NSLocale.currentLocale()
    datePicker.calendar = NSCalendar.currentCalendar()
    datePicker.backgroundColor = UIColor.whiteColor()
    txt_Dob.inputView = datePicker
    txt_birthTime.inputView = datePicker
}

func cancelBtnClicked1(sender:UIButton!)
{
    var btnTag = sender.tag

    if btnTag == 203
    {
        if( txt_Dob.isFirstResponder())
        {
            if sender.tag == 203
            {
                var dateFormatter = NSDateFormatter()
                dateFormatter.dateFormat = "dd-MM-yyyy"
                txt_Dob.text = dateFormatter.stringFromDate(datePicker.date)

            }
        }
        else if( txt_birthTime.isFirstResponder())
        {
            if sender.tag == 203
            {
                var dateFormatter = NSDateFormatter()
                dateFormatter.dateFormat = "HH:mm"
                txt_birthTime.text = dateFormatter.stringFromDate(datePicker.date)
               }
        }
        txt_Dob.resignFirstResponder()
        txt_birthTime.resignFirstResponder()
    }
    else
    {
        self.view.endEditing(true)
    }
}

现在我希望如果我选择今天的日期选择器应该允许我花到现在为止的时间,但是如果我选择前天的日期,它应该允许我花任何时间。

我不知道该怎么做。谁能建议我该怎么做?

谢谢..

最佳答案

只需更新时间选择器的最大日期并匹配当前日期,例如:

dateComponents.hour = 23
dateComponents.minute = 59
dateComponents.second = 59

datePicker.maximumDate = currentCalendar?.dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions())

if txt_Dob.isFirstResponder()
{
    datePicker.datePickerMode = UIDatePickerMode.Date
}
if txt_birthTime.isFirstResponder()
{
    datePicker.datePickerMode = UIDatePickerMode.Time
    if selectedDate == NSDate(){
    datePicker.maximumDate = NSDate(timeIntervalSinceNow:0)
    }
}

当用户从 txt_Dob 日期选择器中选择日期时,您必须更新 selectedDate。

if( txt_Dob.isFirstResponder())
    {
        if sender.tag == 203
        {
            var dateFormatter = NSDateFormatter()
            dateFormatter.dateFormat = "dd-MM-yyyy"
            txt_Dob.text = dateFormatter.stringFromDate(datePicker.date)
            selectedDate = datePicker.date
            txt_birthTime.text = ""
        }
    }

关于ios - 根据所选日期快速从手动 datePicker 获取时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36146699/

相关文章:

ios - 如何在 UIButton 上制作原生 "Pulse effect"动画 - iOS

iOS - 针对 imageView 上按钮的不同屏幕尺寸的自动布局缩放

objective-c - UITableViewCell 中的 AVPlayer.play() 会暂时阻塞 UI

swift - 从图像路径数组中删除项目

javascript - jQuery Datepicker 日期格式不起作用

ios - Swift:如何使用 NSUserDefaults 为 TableView 中的每个单元格存储单独的信息

ios - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : '-[_. AppDelegate add:]: 无法识别的选择器

xcode - 在 Swift 中使用 Parse 用户查询

jquery - 在单个输入字段中选择多个日期?

ios - NSDateFormatter 不同日期的相同字符串