Your conversion takes the time zone from the calendar into account, which you probably don't want in this case when just splitting a date into components. Set the time zone to GMT and it should give you the result you want;
[cal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];