20

I am trying to get just the date from UIDatePicker:

myDatePicker.datePickerMode = UIDatePicker.Mode.date
var selectedDate=myDatePicker.date
println(selectedDate)

However, this prints more than the date (it prints 2015-04-09 21:45:13 +0000). How do I get just the date part (without the time)? I also set the date picker Mode property to Date.

Himanshu padia
  • 7,428
  • 1
  • 47
  • 45
Amy
  • 389
  • 1
  • 5
  • 9
  • I have the same issue right now. The next question would be, what the time part (21:45:13 in your example) represents? – geohei May 17 '20 at 07:42

6 Answers6

31

According to the Apple's documentation datePicker.mode should be date so you can use DateFormatter like so

Swift 4

datePicker.datePickerMode = UIDatePicker.Mode.date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy"
let selectedDate = dateFormatter.string(from: datePicker.date)
print(selectedDate)
Himanshu padia
  • 7,428
  • 1
  • 47
  • 45
thinklinux
  • 1,287
  • 9
  • 13
9
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM/dd/yy"
let dateString = dateFormatter.stringFromDate(myDatePicker.date)

You can print dateString, assign it to a label, whatever. The format will be

04/09/15

Shades
  • 5,568
  • 7
  • 30
  • 48
5

Swift 3/4, this will print a string of type Mar 08, 2017

   datePicker.datePickerMode = .date
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MMM dd, yyyy"
    let selectedDate = dateFormatter.string(from: datePicker.date)
    print(selectedDate)
JP Aquino
  • 3,946
  • 1
  • 23
  • 25
4

Swift 4.0 version code is here

@IBAction func saveDateAction(_ sender: Any) {

        myDatePicker.datePickerMode = UIDatePicker.Mode.date
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd MMM yyyy"
        let selectedDate = dateFormatter.string(from: myDatePicker.date)
        print("selectedDate",selectedDate)    
    }
Himanshu padia
  • 7,428
  • 1
  • 47
  • 45
Ram
  • 858
  • 1
  • 14
  • 19
3

I just want to add my bit in on here after coming across a similar problem. I would follow shades answer for String display of date. Not the from XCode 7 and swift 2 onwards when you use a UIDatePicker set the following to only view dates in the Picker:

@IBOutlet weak var datePicker: UIDatePicker!
datePicker.datePickerMode = .Date
Yushin
  • 1,684
  • 3
  • 20
  • 36
Dom Bryan
  • 1,238
  • 2
  • 19
  • 39
0

Date picker date :

let date = datePicker.date
let dateConverted = Date.init(year: date.GetYear(), month: date.GetMonth(), day: date.GetDay())
//dateConverted result = 2019-02-27 00:00:00 +0000
let predicate = NSPredicate(format: "booking_date == %@", dateConverted as CVarArg)

Use this extensions:

extension Date {

init(year: Int, month: Int, day: Int) {
    var dc = DateComponents()
    dc.year = year
    dc.month = month
    dc.day = day

    var calendar = Calendar(identifier: .gregorian)
    calendar.timeZone = TimeZone(secondsFromGMT: 0)!
    if let date = calendar.date(from: dc) {
        self.init(timeInterval: 0, since: date)
    } else {
        fatalError("Date component values were invalid.")
    }
}

func GetYear() -> Int {
    let calendar: NSCalendar! = NSCalendar(calendarIdentifier: .gregorian)
    let components = calendar.components([.day , .month , .year], from: self)
    return components.year!
}

func GetMonth() -> Int {
    let calendar: NSCalendar! = NSCalendar(calendarIdentifier: .gregorian)
    let components = calendar.components([.day , .month , .year], from: self)
    return components.month!
}

func GetDay() -> Int {
    let calendar: NSCalendar! = NSCalendar(calendarIdentifier: .gregorian)
    let components = calendar.components([.day , .month , .year], from: self)
    return components.day!
}
}
Mushrankhan
  • 749
  • 9
  • 12