VinZen
VinZen

Reputation: 323

UIDatePicker value does not match displayed date

I encounter a weird issue if I set the maximum date of a UIDatePicker whenever I change the day on the UI, the value is always day - 1 I am doing something wrong ?

class DateField: UITextField {

    private let datePicker = UIDatePicker()


    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        datePicker.datePickerMode = .Date
        datePicker.maximumDate = NSDate()
        datePicker.addTarget(self, action: "updateBirthdate", forControlEvents: .ValueChanged)
        inputView = datePicker
        // inputAccessoryView stuff
    }


    func updateBirthdate() {
        text = NSDateFormatter.myFormatter().stringFromDate(datePicker.date)
    }
}

extension NSDateFormatter {

    class func myFormatter() -> NSDateFormatter {
        let formatter = NSDateFormatter()
        formatter.timeZone = NSTimeZone(name: "UTC")
        formatter.dateFormat = "yyyy-MM-dd"
        return formatter
    }
}

Upvotes: 1

Views: 796

Answers (1)

Jakub Vano
Jakub Vano

Reputation: 3873

Time zone of your UIDatePicker is most likely different from the time zone of myFormatter() - you can set time zone for UIDatePicker with

datePicker.timeZone = NSTimeZone(name: "UTC")

Upvotes: 6

Related Questions