[英]Date from Calendar.dateComponents returning nil in Swift
我正在嘗試創建一個包含日、月和年的Date
對象,但 Calendar 的功能返回nil
。
let calendar = Calendar.current
let date = calendar.dateComponents([.day,.month,.year], from: Date()).date! // <- nil
如何僅使用日、月和年創建Date
對象?
作為補充rmaddy的答案,為什么你的代碼返回nil
的是,你嘗試轉換DateComponents
的Date
而沒有指定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
然后你會得到預期的結果。
如果您想去除日期的時間部分(將其設置為午夜),則可以使用Calendar startOfDay
:
let date = Calendar.current.startOfDay(for: Date())
這將為您提供當前日期的當地時間午夜。
如果你想在當前日期為不同的時區的午夜,創建一個新的Calendar
實例,並設置其timeZone
需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.