Objective c 如何从Xcode中的uipicker获取所选时区的日期和时间

Objective c 如何从Xcode中的uipicker获取所选时区的日期和时间,objective-c,xcode,xcode4,Objective C,Xcode,Xcode4,我正试图在标签或文本字段中显示从uipicker选择的时区的日期和时间,我没有任何方法来解决这个问题,所以请任何人帮助我,提前感谢 SelectedTimeZone=[Weight objectAtIndex:[pickerView SelectedRowUncomponent:0]]; NSString*selectedzone=SelectedTimeZone NSCalendar *gregorian=[[NSCalendar alloc] initWithCalendarIdentifi

我正试图在标签或文本字段中显示从uipicker选择的时区的日期和时间,我没有任何方法来解决这个问题,所以请任何人帮助我,提前感谢

SelectedTimeZone=[Weight objectAtIndex:[pickerView SelectedRowUncomponent:0]]; NSString*selectedzone=SelectedTimeZone

NSCalendar *gregorian=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithName:selectedzone]];
NSDateComponents *timeZoneComps=[[NSDateComponents alloc] init];

NSDate *date=[gregorian dateFromComponents:timeZoneComps];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterFullStyle];
[formatter setDateFormat:@"dd-MM-yyyy HH:mm:ss "];
NSString *todaysDate= [formatter stringFromDate:[NSDate date]];
zone.text = todaysDate;  I know this is not proper way but i'm new to xcode

要从uipicker获取所选时区的日期和时间,请向格式化程序提供如下日期:

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;

[NSDate date]返回表示当前日期和时间的日期对象,无论您在何处。日期不受地点或时区的限制。只有一个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]);

或者

看到您尝试过的一些代码会非常有帮助。谢谢,但现在它显示了系统的当前时间和日期,适用于所有时区