CoreData存储Date类型日期转字符串返回nil问题排查
问题分析与解决
嘿,这个问题我太熟啦!你代码里的问题很明显——创建了DateFormatter之后,完全没给它指定日期格式或者样式!
DateFormatter默认是没有预设格式的,它不知道你想要把Date转换成什么样的字符串(是"2024-05-20"还是"May 20, 2024"?),所以自然无法生成有效的字符串,最终输出空内容(你说的nil其实应该是空字符串,大概率是打印的时候看错啦)。
修正后的代码
只需要给DateFormatter加上格式设置就行,比如:
if let bday = result.birthday { print(bday) let formatter = DateFormatter() // 设置你需要的日期格式,比如四位年-两位月-两位日 formatter.dateFormat = "yyyy-MM-dd" // 建议加上固定locale,避免不同地区系统带来的格式偏差 formatter.locale = Locale(identifier: "en_US_POSIX") let bDateString = formatter.string(from: bday) print(bDateString) self.birthdate = bDateString }
额外小提示
如果想要适配用户系统的本地化日期样式(比如美国用户看到"MM/dd/yyyy",欧洲用户看到"dd/MM/yyyy"),可以不用手动写dateFormat,直接设置日期样式:
formatter.dateStyle = .medium // 会根据系统locale生成类似"May 20, 2024"的格式 formatter.timeStyle = .none // 如果不需要显示时间的话
常用的日期格式符参考:
yyyy:四位年份(比如2024)MM:两位月份(比如05代表五月)dd:两位日期(比如20)HH:24小时制的小时(比如14代表下午2点)hh:12小时制的小时(比如02代表下午2点,配合a显示AM/PM)
内容的提问来源于stack exchange,提问作者user8977455
相关产品推荐
相关产品推荐

