2012-07-16 6 views
1

Я пытаюсь преобразовать NSString в NSDate со временем. Вот что я делаю сейчас:Как конвертировать NSString в NSDate со временем?

NSString *myDateIs= @"2012-07-14 11:30:40 AM "; 
NSDateFormatter* startTimeFormat = [[NSDateFormatter alloc] init]; 
[startTimeFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss a "]; 
NSDate*newStartTime = [startTimeFormat dateFromString:myDateIs]; 

Выход 2012-07-14 06:00:40 +0000. Дата правильная, но время неверно. Как я могу получить правильное время? Спасибо.

+1

использовать этот NSString * myDateIs = @ "2012-07-14 11:30:40 AM"; NSDateFormatter * startTimeFormat = [[NSDateFormatter alloc] init]; [startTimeFormat setDateFormat: @ "YYYY-MM-dd hh: mm: ss a"]; [startTimeFormat setTimeZone: [NSTimeZone timeZoneWithAbbreviation: @ "GMT"]]; NSDate * newStartTime = [startTimeFormat dateFromString: myDateIs]; –

+0

спасибо .. сейчас его отлично работает ... :) – Mani

ответ

2

Время, которое вы получаете в GMT, конвертирует его в местное время.

NSDateFormatter* local = [[[NSDateFormatter alloc] init] autorelease];   
[local setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]]; 
[local setDateFormat:@"YYYY-MM-dd hh:mm:ss a"]; 

NSString* localSTR = [local stringFromDate: newStartTime]; 
1

Часовой пояс. NSDate будет хранить время с точки зрения GMT. Однако ваш местный часовой пояс, вероятно, совсем другой.

1

Необходимо установить часовой пояс.

NSString *myDateIs= @"2012-07-14 11:30:40 AM "; 
NSDateFormatter* startTimeFormat = [[NSDateFormatter alloc] init]; 
startTimeFormat.timeZone=[NSTimeZone timeZoneWithName:@"UTC"]; 
[startTimeFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss a"]; 
NSDate*newStartTime = [startTimeFormat dateFromString:myDateIs]; 
NSLog(@"%@", newStartTime); 

Выход:

2012-07-14 11:30:40 +0000 
1

Это один будет работать для вас:

[startTimeFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss aa"]; 
[startTimeFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 

Вы пропустили А в DateFormat и должны установить часовой пояс.

Смежные вопросы