从 String 创建 DateComponents / NSDateComponents,反之亦然
create DateComponents / NSDateComponents from String and vice versa
是否有一种(优雅的或首选的)方法将 DateComponents 对象转换为 String 并返回,以便
DateComponents -> String -> DateComponents
总是可能的并且生成的对象等于原始对象? (不完全相同)(如 CustomStringRepresentable
)
对于 NSDate
/ Date
有一个 NSDateFormatter
/ DateFormatter
可以做到这一点,来回转换。
对于DateComponents
有一个DateComponentsFormatter
,但在我看来不支持从String
到DateComponents
的方向。
这个问题的动机
HealthKit 曾经将生日存储为 NSDate
到 iOS 9.x。
从 iOS 10 开始,HealthKit 使用 DateComponents
作为生日模型。 (并弃用 NSDate
生日)
我试图在我自己的以 HealthKit 为中心的应用程序的数据模型中反映 HealthKits 模型的变化。最直接的方法是像 HealthKit 那样在我的模型中使用 DateComponents
。
因为我需要将我的模型保存到一个文件并再次加载它,这个问题的答案将使我能够做到这一点。
明显的回退是将 DateComponents
转换为 Date
并保存。但是 Apple 弃用生日 Date
一定有充分的理由。
因为 NSDateComponents
符合 NS(Secure)Coding
.
,所以直接通过 NSKeyedArchiver
保存日期组件
是否有一种(优雅的或首选的)方法将 DateComponents 对象转换为 String 并返回,以便
DateComponents -> String -> DateComponents
总是可能的并且生成的对象等于原始对象? (不完全相同)(如 CustomStringRepresentable
)
对于 NSDate
/ Date
有一个 NSDateFormatter
/ DateFormatter
可以做到这一点,来回转换。
对于DateComponents
有一个DateComponentsFormatter
,但在我看来不支持从String
到DateComponents
的方向。
这个问题的动机
HealthKit 曾经将生日存储为 NSDate
到 iOS 9.x。
从 iOS 10 开始,HealthKit 使用 DateComponents
作为生日模型。 (并弃用 NSDate
生日)
我试图在我自己的以 HealthKit 为中心的应用程序的数据模型中反映 HealthKits 模型的变化。最直接的方法是像 HealthKit 那样在我的模型中使用 DateComponents
。
因为我需要将我的模型保存到一个文件并再次加载它,这个问题的答案将使我能够做到这一点。
明显的回退是将 DateComponents
转换为 Date
并保存。但是 Apple 弃用生日 Date
一定有充分的理由。
因为 NSDateComponents
符合 NS(Secure)Coding
.
NSKeyedArchiver
保存日期组件