我正在开发一个生日提醒应用。我希望用户能够看到距离下一个人的生日还有多少天。
假设我的 NSDate()
= 2015-06-30 07:21:47 +0000
而生日的 NSDate
= 1985-08-29 12:00:00 +0000
如何获得距离下一个生日的天数?我已经使用了类似这样的方法,它给出了自日期实际开始以来的负天数(这些天数是成千上万的出生日期)。然后我将365天添加到数字差异中,直到它变为正数,但它仍然返回一个奇怪的数字。我认为这可能是由于闰年或其他原因造成的。
我可以实现一种方法吗?以某种方式使年份组件相等,以便始终从下一个生日进行比较,而不是从最初的出生日期进行比较?
编辑:
这是我正在使用的函数:
func daysBetween(date1: NSDate, date2: NSDate) -> Int {
var calendar: NSCalendar = NSCalendar.currentCalendar()
let date1 = calendar.startOfDayForDate(date1)
let date2 = calendar.startOfDayForDate(date2)
let flags = NSCalendarUnit.CalendarUnitDay
let components = calendar.components(flags, fromDate: date1, toDate: date2, options: nil)
return components.day
}
根据我发表的日期示例,我会像这样使用它:
// sampleDate = 1985-08-29 12:00:00 +0000
daysBetween(sampleDate, date2: NSDate())
// --> 10897
无论是正数还是负数,这个数字都是以千计的。我想把它转化为距离下一个生日的天数。