2015-11-19 53 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

非常感謝你,守谷!它解決了我的問題! :) –

相關問題