从 UIDatePicker 获取日期(没有时间)
Posted
技术标签:
【中文标题】从 UIDatePicker 获取日期(没有时间)【英文标题】:Get just the date (no time) from UIDatePicker 【发布时间】:2015-06-12 16:12:36 【问题描述】:我正在尝试从 UIDatePicker 获取日期:
myDatePicker.datePickerMode = UIDatePicker.Mode.date
var selectedDate=myDatePicker.date
println(selectedDate)
但是,这比日期打印更多(打印 2015-04-09 21:45:13 +0000)。我如何只获得日期部分(没有时间)?我还将日期选择器模式属性设置为日期。
【问题讨论】:
我现在也有同样的问题。下一个问题是,时间部分(在您的示例中为 21:45:13)代表什么? 【参考方案1】:根据 Apple 的文档,datePicker.mode
应该是date
,所以你可以像这样使用DateFormatter
斯威夫特 4
datePicker.datePickerMode = UIDatePicker.Mode.date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMMM yyyy"
let selectedDate = dateFormatter.string(from: datePicker.date)
print(selectedDate)
【讨论】:
【参考方案2】:let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "MM/dd/yy"
let dateString = dateFormatter.stringFromDate(myDatePicker.date)
您可以打印dateString
,将其分配给标签,等等。格式为
04/09/15
【讨论】:
【参考方案3】:Swift 3/4,这将打印类型为 Mar 08, 2017 的字符串
datePicker.datePickerMode = .date
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy"
let selectedDate = dateFormatter.string(from: datePicker.date)
print(selectedDate)
【讨论】:
【参考方案4】:在遇到类似问题后,我只想在这里补充一点。我会遵循日期字符串显示的阴影答案。当您使用 UIDatePicker 时,不是从 XCode 7 和 swift 2 开始,将以下设置为仅查看 Picker 中的日期:
@IBOutlet weak var datePicker: UIDatePicker!
datePicker.datePickerMode = .Date
【讨论】:
【参考方案5】: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)
【讨论】:
【参考方案6】:日期选择器日期:
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!
【讨论】:
以上是关于从 UIDatePicker 获取日期(没有时间)的主要内容,如果未能解决你的问题,请参考以下文章
如何从UIDatepicker中快速编辑用户的日期和时间选择器?
如何使用相同的 UIDatePicker 分别在 2 UITextField 中获取日期和时间
从特定时间限制 UIDatePicker 日期。例如输入 DOB 到有限制的年龄限制