2012-08-27 29 views
1

我试图从标签或文本字段中的uipicker显示选定时区的日期和时间我没有得到任何方法来解决此问题,所以请任何人帮助我提前致谢。如何从uipicker在Xcode中获取选定时区的日期和时间

SelectedTimeZone = [Weight objectAtIndex:[pickerView selectedRowInComponent: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 
+0

见此*你的努力将是非常有益的一些*代码。 – dasblinkenlight

回答

3

[NSDate的日期]返回表示当前的日期和时间的日期对象,无论在哪里你是。 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]); 

或者Refer same question here

0

要获得日期和所选时区的时间从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; 
+0

雅我得到了,但它的显示日期为01-01-0001 :( –

+0

什么将timeZoneComps的价值??? –

+0

检查编辑答案 –

相关问题