2017-04-02 27 views
0

我使用UITextField日期選擇器將日期保存在Core Data中。核心數據在swift中匹配日期

在日期選擇器發件人我得到了這種格式的日期:2017-04-02 14:56:41

我想將它轉換成這種格式02 April 2017

我該怎麼辦?下面是我的代碼:

 var scheduledPickDate: NSDate! 

     @IBAction func scheduleDateTextFieldBeginEditing(_ sender: UITextField) { 

      let datePickerView:UIDatePicker = UIDatePicker() 

      datePickerView.minimumDate = NSDate() as Date 

      datePickerView.datePickerMode = UIDatePickerMode.date 

      sender.inputView = datePickerView 

      datePickerView.addTarget(self, action: #selector(WalkIn.ScheduledDateChanged), for: UIControlEvents.valueChanged) 
     } 

     func ScheduledDateChanged(sender:UIDatePicker){ 


      let dateFormatter = DateFormatter() 

      dateFormatter.dateStyle = DateFormatter.Style.long 

      dateFormatter.timeStyle = DateFormatter.Style.none 

      dateFormatter.dateFormat = "dd MMMM yyyy" 

      //print(sender.date) 

      scheduledPickDate = scheduledPickDate as NSDate! 

      //print(scheduledPickDate) 


      scheduledDateWalkinPatient.text = dateFormatter.string(from: sender.date) 

     } 

// on save function 

managedObj.setValue(scheduledPickDate, forKey: "dateSchedule") // 2017-04-02 14:56:41 

我如何轉換VAR scheduledPickDate爲這種格式02 April 2017

dateFormatter.string(from: sender.date) 

你只(除非您使用的是String作爲屬性)不能在Coredata存儲在你想要的格式的日期:

+0

'ScheduledDateChanged'中的代碼似乎是做你想做的。你有什麼問題?另外請注意,您應該只設置'dateFormat'或兩個'xxxStyle',而不是兩者。 – rmaddy

回答

1

您已經與格式化日期。如果您需要檢索該日期並將其顯示給用戶,則需要重新格式化

+0

所以你的答案表明,我只能在該格式的核心數據中存儲日期2017-04-02 14:56:41。但問題是,當我取得當前日期文本字段的comapre。我目前的日期格式與2017年4月2日一樣。我怎樣才能比較兩個謂詞? let predicate = NSPredicate(format:「(dateSchedule> =%@)」,fromTextField.text!) – Imran

+0

@Imran能否發佈一個新問題並粘貼鏈接?我會盡快答覆 – carlos21

+0

http://stackoverflow.com/questions/43185896/core-date-date-comparion-from-date-picker-text-field – Imran

0

在覈心數據中,您應該將scheduledDate存儲爲NSDate類型的實體。當您檢索該日期時,您可以使用dateFormatter。不過,我建議使用.longStyle作爲dateFormat而不是「dd MMMM yyyy」。本地化更好。