2015-11-19 54 views

回答

0

您应该使用NSCalendar方法而isDate(inSameDayAsDate :),所以我们可以创建一个使用该方法返回一个布尔值的NSDate扩展:

extension NSDate { 
    struct Calendar { 
     static let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! 
    } 
    func isInSameDayAs(date date: NSDate) -> Bool { 
     return Calendar.gregorian.isDate(self, inSameDayAsDate: date) 
    } 
} 

用法:

let date1 = NSDate() 
let date2 = NSDate().dateByAddingTimeInterval(60) 

if date1.isInSameDayAs(date: date2){ 
    print("true") // "true\n" 
} else { 
    print("false") 
} 
+0

狮子座,这是正确的,只有当应用程序将在这个间隔(60秒)工作,这段代码才会做些什么?但如果用户将在11关闭应用程序并在1打开? –

+0

@ЕгорКузнецов60秒只是在同一天创建一个不同的日期,当然如果你在11:59:0xpm的情况下尝试这个,如果会给你2天不同的日期 –

+0

你只需要将NSDate()保存到NSUserDefaults和下一个用户打开应用程序的所有时间是检查Now(NSDate())是否与保存的日期不同。如果不是在发布时删除它并保存新日期 –

0

给出两个日期dataAdateB

let calendar = NSCalendar.currentCalendar() 
    var componantsA = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateA) 
    var componantsB = calendar.components(NSCalendarUnit.MonthCalendarUnit | NSCalendarUnit.YearCalendarUnit | NSCalendarUnit.DayCalendarUnit, fromDate:dateB) 

    var sameDay:Bool = (componantsA.day == componantsB.day) && (componantsA.month == componantsB.month) && (componantsA.year == componantsB.year) 
+0

非常感谢你,守谷!它解决了我的问题! :) –

相关问题