Swift 仅从UIDatePicker获取日期(无时间)

Swift 仅从UIDatePicker获取日期(无时间),swift,datepicker,Swift,Datepicker,我正试图从UIDatePicker获取日期: myDatePicker.datePickerMode = UIDatePicker.Mode.date var selectedDate=myDatePicker.date println(selectedDate) 但是,这会打印出更多的日期(打印时间为2015-04-09 21:45:13+0000)。如何只获取日期部分(没有时间)?我还将date picker Mode属性设置为date。根据苹果的文档datePicker。Mode应该是d

我正试图从UIDatePicker获取日期:

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

但是,这会打印出更多的日期(打印时间为2015-04-09 21:45:13+0000)。如何只获取日期部分(没有时间)?我还将date picker Mode属性设置为date。

根据苹果的文档
datePicker。Mode
应该是
date
,这样你就可以像这样使用
DateFormatter

Swift 4

datePicker.datePickerMode = UIDatePicker.Mode.date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy"
let selectedDate = dateFormatter.string(from: datePicker.date)
print(selectedDate)
您可以打印
日期字符串
,将其指定给标签,等等。格式将是

2015年9月4日


遇到类似的问题后,我想在这里补充一下。我会按照答案显示日期的字符串。当您使用UIDatePicker时,不是从XCode 7和swift 2开始,请将以下内容设置为仅在Picker中查看日期:

@IBOutlet weak var datePicker: UIDatePicker!
datePicker.datePickerMode = .Date

Swift 3/4,将打印2017年3月8日类型的字符串

   datePicker.datePickerMode = .date
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MMM dd, yyyy"
    let selectedDate = dateFormatter.string(from: datePicker.date)
    print(selectedDate)

此处是Swift 4.0版本代码

@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)    
    }
日期选择器日期:

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)
使用此扩展:

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!
}
}

我现在也有同样的问题。下一个问题是,时间部分(在你的例子中是21:45:13)代表什么?
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!
}
}