从 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 到有限制的年龄限制

从 UITextField 单击事件 MonoTouch 在 UIDatePicker 中选择日期

UIDatePicker 仅显示特定日期

UIDatePicker 仅在核心数据中存储时间