核心数据在swift中与日期匹配

时间:2017-04-02 22:21:27

标签: ios swift core-data

我正在使用UITextField日期选择器将日期保存在Core Data中。

在日期选择器发件人处,我得到了这种格式的日期: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

2 个答案:

答案 0 :(得分:1)

您已使用以下内容格式化日期:

dateFormatter.string(from: sender.date)

您无法在Coredata中以您希望的格式存储日期(除非您使用String作为属性)。如果那时您需要检索该日期并将其显示给用户,则需要再次格式化

答案 1 :(得分:0)

在核心数据中,您应将scheduledDate存储为NSDate类型实体。 当您检索该日期时,您可以使用dateFormatter。但是,我建议使用.longStyle作为dateFormat而不是" dd MMMM yyyy"。这种方式更适合本地化。