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

时间:2010-11-18 09:54:32

标签: 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];

上述代码没有给我正确的时间。

由于

1 个答案:

答案 0 :(得分: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);

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