如何在我的申请中检索任何国家的当前时间?

Tir*_*rth 1 iphone nsdate nsdateformatter

我想显示任何国家/地区的当前时间.假设我想了解美国在澳大利亚的当前时间,或者我想查看一下南非的英格兰当前时间,那么我如何获取当前的国家时间?为此,我写了一个代码,但我没有工作,

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];

NSDate *date = [NSDate date];

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];
Run Code Online (Sandbox Code Playgroud)

上面的代码没有给我正确的时间.

谢谢

Mat*_*uch 6

没有美国或澳大利亚这样的时间.你必须使用正确的时区,美国大陆有4个,澳大利亚有3个不同的时区.

要获得墨尔本,柏林和洛杉矶的当前时间(字符串),您可以使用以下代码:

 NSDate *now = [NSDate date];
 NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
 [df setTimeStyle:NSDateFormatterLongStyle];
 [df setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Melbourne"]];
 NSString *melbourneTime = [df stringFromDate:now];
 [df setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Berlin"]];
 NSString *berlinTime = [df stringFromDate:now];
 [df setTimeZone:[NSTimeZone timeZoneWithName:@"America/Los_Angeles"]];
 NSString *laTime = [df stringFromDate:now];
 NSLog(@"%@", melbourneTime);
 NSLog(@"%@", berlinTime);
 NSLog(@"%@", laTime);
Run Code Online (Sandbox Code Playgroud)

您更改的区域设置会影响格式.例如,en_US语言环境中melbourne中的当前时间是November 18, 2010 9:14:28 PM GMT+11:00在de_DE中 18. November 2010 21:14:28 GMT+11:00