Swift 仅从UIDatePicker获取日期(无时间)
我正试图从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
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!
}
}