繁体   English   中英

将字符串转换为日期,格式为dd MMM yyy

[英]Convert a string to a date in the format of `dd MMM yyy`

我有用户使用UIDatePicker输入他们的DOB,该UIDatePicker被放入格式为dd MMM yyyyUITextField (作为字符串)中。 例如,1999年9月12日的DOB将显示为1999年9月12日。

如何使用DateFormatter()进行转换并存储在具有Date属性类型的CoreData实体中?

运用

let dob = "12 Sep 1999"

let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
dateFormatter.locale = Locale(identifier: "en_GB")

dateFormatter.date(from: dob)

返回Sep 12, 1999 at 12:00 AM ,这很好,但是我不知道如何摆脱“上午12:00”?

你这是什么? Date类保存一个时间戳,一个带有时间的日期。 您无法避免将时间作为Date一部分。 如果您只想处理一天,则您的代码可以忽略时间。

Date实例是一个时间点(实际上是Double值)。 它不知道时区,语言环境和任何日期格式。

换个角度思考:

  • 在您的NSManagedObject子类中,将该属性声明为Date

     @NSManaged public var dob: Date 
  • 从日期选择器中获取date并保存。

  • NSManagedObject子类中添加一个计算属性,以仅将日期部分显示为字符串

     var dobString : String { let dateFormatter = DateFormatter() dateFormatter.dateStyle = .medium dateFormatter.timeStyle = .none dateFormatter.locale = Locale(identifier: "en_GB") return dateFormatter.string(from: dob) } 

实际上,从dateFormatter.date返回的是一个Date对象。 您可以将其保存为变量,并使用CoreDate作为Date对象进行存储。 您所看到的只是描述对象的字符串-因此您无需摆脱“在12:00”的问题。

您所看到的只是日期的description属性

let date = dateFormatter.date(from: dob)!  //"Sep 12, 1999 at 12:00 AM"
dateFormatter.string(from: date)           //"12 Sep 1999"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM