Дата iOS 5, выбранная в DatePicker

#nsdate #nsdateformatter #ios5 #nsdatepicker

#nsdate #nsdateformatter #ios5 #nsdatepicker

Вопрос:

Я хочу, чтобы в моем DatePicker была выбрана дата, но у меня проблема с задержкой в 2 часа.

  // String From Date
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle];
[dateFormatter setDateStyle:NSDateFormatterFullStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
NSDate *dateSelected = [datePicker date];
NSString *dateChoisie = [dateFormatter stringFromDate:dateSelected];
NSDate *dateFinal = [dateFormatter dateFromString:dateChoisie];

NSLog(@"dateSelected = %@", dateSelected);
NSLog(@"dateChoisie = %@", dateChoisie);
NSLog(@"dateFinal = %@", dateFinal);
  

Результат :

 2011-10-15 00:16:11.129 QuickEvent[25459:707] dateSelected = 2011-10-14 22:20:05  0000
2011-10-15 00:16:11.132 QuickEvent[25459:707] dateChoisie = 2011-10-15 00:20:05  0200
2011-10-15 00:16:11.138 QuickEvent[25459:707] dateFinal = 2011-10-14 22:20:05  0000
  

Ответ №1:

Попробуйте использовать этот вид форматирования..

 NSTimeZone *sourceTimeZone =[NSTimeZone systemTimeZone];
NSTimeZone *destinationTimeZone = [NSTimeZone timeZoneForSecondsFromGMT:(TIME_ZONE_THAT_YOU_WANTED*3600)];

NSInteger sourceSeconds =[sourceTimeZone secondsFromGMTForDate:date];
NSInteger destinationSeconds =[destinationTimeZone secondsFromGMTForDate:date];
NSTimeInterval interval = destinationSeconds - sourceSeconds;

NSDate *convertedDate =[[[NSDate alloc]initWithTimeInterval:interval sinceDate:date] autorelease];
return convertedDate;
  

Для примера вы можете применить TIME_ZONE_THAT_YOU_WANTED = -8 для времени, основанного на часовом поясе Нью-Йорка

Спасибо, Арун.