Iznogud
Iznogud

Reputation: 73

How can capture a date from UIDatePicker to an outside variable

Im just trying to extract a date to a variable to be used somewhere else and to have that variable change everytime the value of the Picker changes.

 @IBAction func datePicker(_ sender: UIDatePicker)  {

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy/MM/dd"
       var DateString = dateFormatter.string(from: sender.date)

        return
    }

Im sure its simple but Im a newbie. Thank you

Upvotes: 0

Views: 62

Answers (3)

vadian
vadian

Reputation: 285059

Use a property observer. It's called whenever the value changes.

var selectedDate : Date = Date() {
    didSet {
        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.dateFormat = "yyyy/MM/dd"
        dateDisplay.text = dateFormatter.string(from: selectedDate)
    }
}

@IBAction func datePicker(_ sender: UIDatePicker) {
    selectedDate = sender.date
}

Upvotes: 1

Asmaa Tarek
Asmaa Tarek

Reputation: 386

Try this

make an extension on Date

 extension Date {
            func convertDateToString(format : String) -> String {
                let dateFormatter = DateFormatter()
                dateFormatter.dateFormat = format
               return dateFormatter.string(from: self)
        }
    }

in your VC

let dateFormat = "yyyy/MM/dd"
var currentDate = Date().convertDateToString(format: dateFormat) // to get current date

@IBAction func datePicker(_ sender: UIDatePicker)  {
    currentDate = sender.date.convertDateToString(format: dateFormat)
 }

Upvotes: 3

Shehata Gamal
Shehata Gamal

Reputation: 100503

Declare it inside the vc

var currentDate = ""

@IBAction func datePicker(_ sender: UIDatePicker)  {
     let dateFormatter = DateFormatter()
     dateFormatter.dateFormat = "yyyy/MM/dd"
     currentDate = dateFormatter.string(from: sender.date)!
 }

Upvotes: 0

Related Questions