// // Copyright (c) 2018 Open Whisper Systems. All rights reserved. // #import "NSDate+OWS.h" #import NS_ASSUME_NONNULL_BEGIN const NSTimeInterval kSecondInterval = 1; const NSTimeInterval kMinuteInterval = 60; const NSTimeInterval kHourInterval = 60 * kMinuteInterval; const NSTimeInterval kDayInterval = 24 * kHourInterval; const NSTimeInterval kWeekInterval = 7 * kDayInterval; const NSTimeInterval kMonthInterval = 30 * kDayInterval; const NSTimeInterval kYearInterval = 365 * kDayInterval; @implementation NSDate (OWS) + (uint64_t)ows_millisecondTimeStamp { uint64_t milliseconds = (uint64_t)(std::chrono::system_clock::now().time_since_epoch() / std::chrono::milliseconds(1)); return milliseconds; } + (NSDate *)ows_dateWithMillisecondsSince1970:(uint64_t)milliseconds { return [NSDate dateWithTimeIntervalSince1970:(milliseconds / 1000.0)]; } + (uint64_t)ows_millisecondsSince1970ForDate:(NSDate *)date { return (uint64_t)(date.timeIntervalSince1970 * 1000); } - (BOOL)isAfterDate:(NSDate *)otherDate { return [self compare:otherDate] == NSOrderedDescending; } - (BOOL)isBeforeDate:(NSDate *)otherDate { return [self compare:otherDate] == NSOrderedAscending; } - (BOOL)isAfterNow { return [self isAfterDate:[NSDate new]]; } - (BOOL)isBeforeNow { return [self isBeforeDate:[NSDate new]]; } @end NS_ASSUME_NONNULL_END