首页 > 解决方案 > 来自 Calendar.dateComponents 的日期在 Swift 中返回 nil

问题描述

我正在尝试创建一个Date包含日、月和年的对象,但 Calendar 的功能正在返回nil

let calendar = Calendar.current
let date = calendar.dateComponents([.day,.month,.year], from: Date()).date! // <- nil

如何创建Date仅包含日、月和年的对象?

标签: iosswiftdatecalendar

解决方案


作为对 rmaddy 答案的补充,您的代码返回的原因nil 是您尝试转换DateComponents为 aDate而不指定 a Calendar

如果该转换是使用日历方法完成的

let calendar = Calendar.current
let components = calendar.dateComponents([.day, .month, .year], from: Date())
let date = calendar.date(from: components)

或者如果您将日历添加到日期组​​件

let calendar = Calendar.current
let date = calendar.dateComponents([.day, .month, .year, .calendar], from: Date()).date

然后你会得到预期的结果。


推荐阅读