如何在所选区域xcode的标签中显示时间和日期

时间:2012-08-28 06:57:56

标签: objective-c xcode xcode4 xcode4.2

任何1可以帮助我完成这个问题我试图显示所选时区的日期和时间na标签或文本字段我尝试下面的代码,但它显示所有选定区域的系统的当前时间:(谢谢提前

NSDate *now = [NSDate date];
    NSCalendar *gregorian=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    [gregorian setTimeZone:[NSTimeZone timeZoneWithName:selectedzone]];

    NSDateComponents* timeZoneComps = [gregorian components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit|NSTimeZoneCalendarUnit fromDate:now];

    NSDate *selectedDate=[gregorian dateFromComponents:timeZoneComps];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterFullStyle];
    [formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss "];
    NSString *strSelectedDate= [formatter stringFromDate:selectedDate];
    zone.text = strSelectedDate;

1 个答案:

答案 0 :(得分:1)

[NSDate date]返回表示当前日期和时间的日期对象,无论您身在何处。 NSDates不受地点或时区的限制。现在只有一个NSDate或任何其他时刻表示,而不是每个时区的不同日期对象。因此,您不应尝试在时区之间转换日期。

NSDate *now = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Australia/Sydney"]];
NSLog(@"%@",[formatter stringFromDate:now]); //--> 9/9/11 11:54 PM
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Paris"]];
NSLog(@"%@",[formatter stringFromDate:now]);