の結果を理解する際の問題連絡先の誕生日を含む連絡先のリストがあります。 今、私の連絡先のうち7日以内に誕生日があるのが見たいです。 私は私の希望はそうだったSwift私のアプリでCalendar.dateComponents
let timeSpan = 7
let cal = Calendar.current
let now = Date()
var birthDays = contactList.filter { (contact) -> Bool in
if let birthDate = contact.birthDate {
let difference = cal.dateComponents([.day,.year], from: birthDate as Date, to: now!)
print("BD:\(birthDate) : DIFF \(difference.day!)")
return ((difference.day! <= timeSpan) && difference.day! >= 0)
}
return false
}
一致のみTHOSの連絡先をフィルタリングして返すために私のリストにフィルタを使用しています。しかし、結果はうまくいった。だから私はその差異の結果を見るために閉口にその醜いプリントを追加しました
奇妙なことは、例えば次のようなものです: 今日は2017-08-18私の連絡先の1人が1987年に生まれました - 08-19。 したがって、1のdifference.dayを返す代わりに、私は364を受け取ります。私はfrom:とfrom:dateComponentsに私は-364のdifference.dayを受け取ります。
私の期待は、私が間違って何をやっているの遊び場
import UIKit
var now = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let s = dateFormatter.date(from: "1987-08-19")
let cal = Calendar.current
let difference = cal.dateComponents([Calendar.Component.day,Calendar.Component.month,Calendar.Component.year], from: s!, to: now)
print("\(difference.day!)") // result is difference.day = 30
に再び= 1
difference.dayを持っていましたか?
おかげ
申し訳ありませんが、しかしそれは役に立たなかった。今私はdifference.day = 29を受け取る –
うーん、コメントはどこに行ったのですか? –
ありがとう、両方の答えが働く。しかし私は@Leo Dabosを好む。私はそれにエレガンスが好きです:-) もう一度ありがとう –