Add
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
after initializing your NSCalendar.
[NSDate date] will return the date to the UTC time zone, as well as the absolute interval from January 1, 2001, 00:00 GMT, but NSCalendar has its own time zone set to the default time zone, which may not be UTC.
UTC is "the same" as UTC, a quote from Wikipedia:
, , , (GMT) UTC UT1. "GMT" UTC, UT1, . "GMT"; "UTC" "UT1" . [3]