My iOS app needs to know what hour of the day it is in a particular city.
NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Canberra"]];
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:date];
NSInteger hour = [dateComponents hour];
if (hour > 2 && hour < 12) { // app is only available between midday and 2am
// tell the user to come back later
}
To see a list of available timezone names, launch Terminal on OSX and type:
ls /usr/share/zoneinfo/