// // RCTAppleHealthKit+Utils.m // RCTAppleHealthKit // // Created by Greg Wilson on 2016-06-26. // Copyright © 2016 Greg Wilson. All rights reserved. // #import "RCTAppleHealthKit+Utils.h" @implementation RCTAppleHealthKit (Utils) #pragma mark - Utilities + (NSDate *)parseISO8601DateFromString:(NSString *)date { NSDateFormatter *dateFormatter = [NSDateFormatter new]; NSLocale *posix = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; dateFormatter.locale = posix; dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ"; return [dateFormatter dateFromString:date]; } + (NSString *)buildISO8601StringFromDate:(NSDate *)date { NSDateFormatter *dateFormatter = [NSDateFormatter new]; NSLocale *posix = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]; dateFormatter.locale = posix; dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ssZZZZZ"; return [dateFormatter stringFromDate:date]; } + (NSPredicate *)predicateForSamplesToday { NSDate *now = [NSDate date]; return [RCTAppleHealthKit predicateForSamplesOnDay:now]; } + (NSPredicate *)predicateForSamplesOnDayFromTimestamp:(NSString *)timestamp { NSDate *day = [RCTAppleHealthKit parseISO8601DateFromString:timestamp]; return [RCTAppleHealthKit predicateForSamplesOnDay:day]; } + (NSPredicate *)predicateForSamplesOnDay:(NSDate *)date { NSCalendar *calendar = [NSCalendar currentCalendar]; NSDate *startDate = [calendar startOfDayForDate:date]; NSDate *endDate = [calendar dateByAddingUnit:NSCalendarUnitDay value:1 toDate:startDate options:0]; return [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionStrictStartDate]; } @end