Date の日数差を取得しようとして、以下のコードを書いたところ、欲しかった値と違うものが返ってきました。
Swift
1extension Date { 2 static func getDiff(_ date1:Foundation.Date, _ date2:Foundation.Date)-> Int{ 3 let calendar = Calendar.current 4 let diffDays = abs(calendar.compare(date1, to: date2, toGranularity: .day).rawValue) 5 6 print("date1 : ", date1) 7 print("date2 : ", date2) 8 print("day1 : ", calendar.component(.day, from: date1)) 9 print("day2 : ", calendar.component(.day, from: date2)) 10 print("diffDays : ", diffDays) 11 return diffDays 12 } 13}
結果
date1 : 2017-03-28 16:59:00 +0000 date2 : 2017-03-31 00:11:56 +0000 day1 : 29 //日本時間 (+9時間)なので、これは求めているもの。 day2 : 31 //日本時間 (+9時間)なので、これは求めているもの。 diffDays : 1 //ここが day1 と day2 の差分の、2になってほしい。
以下のコードでも同じ結果になりました。
Swift
1func daysBetweenDate(toDate: Date) -> Int { 2 let components = Calendar.current.dateComponents([.day], from: self, to: toDate) 3 return components.day ?? 0 4 }
色々検索してみても、いい答えが探せませんでした。
他のタイムゾーンでも同様に動くコードにしたいと思っています。
どうやったら、diffDays が2になるようにできるのでしょうか?
どなたかお知恵をお借りできますと、ものすごく助かります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー