The calendar you get from currentCalendar
uses the current locale and thus the time zone of whatever system this is running on. You should create your own calendar for this calculation, setting its time zone to GMT.
NSCalendar * GMTCal = [[NSCalendar alloc] initWithCalendarIdentifier:[[NSCalendar currentCalendar] calendarIdentifier];
[GMTCal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];