[英]Date Format problem - convert string to date in MMM d, yyyy format
[英]Convert a string to a date in the format of `dd MMM yyy`
我有用户使用UIDatePicker
输入他们的DOB,该UIDatePicker
被放入格式为dd MMM yyyy
的UITextField
(作为字符串)中。 例如,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.