Aug*_*sto 3 calendar date ios swift
我正在尝试创建Date具有日,月和年的对象,但是Calendar的功能正在返回nil。
let calendar = Calendar.current
let date = calendar.dateComponents([.day,.month,.year], from: Date()).date! // <- nil
Run Code Online (Sandbox Code Playgroud)
如何Date仅使用日,月和年创建对象?
如果要删除日期的时间部分(将其设置为午夜),则可以使用Calendar startOfDay:
let date = Calendar.current.startOfDay(for: Date())
Run Code Online (Sandbox Code Playgroud)
这将为您提供当前日期的当地时间午夜。
如果您想要不同时区的当前日期的午夜,请创建一个新Calendar实例并timeZone根据需要设置它。
作为补充rmaddy的回答,原因为什么你的代码的回报nil
是,你尝试转换DateComponents为Date无需指定
Calendar。
如果该转换是通过日历方法完成的
let calendar = Calendar.current
let components = calendar.dateComponents([.day, .month, .year], from: Date())
let date = calendar.date(from: components)
Run Code Online (Sandbox Code Playgroud)
或者如果您将日历添加到日期组件
let calendar = Calendar.current
let date = calendar.dateComponents([.day, .month, .year, .calendar], from: Date()).date
Run Code Online (Sandbox Code Playgroud)
那么您将获得预期的结果。