2010-05-17 5 views
0

У меня есть stringdate 16-MAY-2010 23:04:44, который мне нужно преобразовать в часовой пояс gmt, который требуется, это 17 мая 2010 года 12:03:03.Форма преобразования часового пояса stringdate

Я использовал дату форматирования для преобразования, но результат я получаю не в формате я required.I Посылаю код, пожалуйста, дайте мне знать, если я делаю правильно или нет

Вот код:

NSString *timeStamp = [format stringFromDate:[NSDate date]]; 
NSString *output = [timeConv dateStringFromString:timeStamp]; 

- (NSString *)dateStringFromString:(NSString *)sourceString 
{  
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; 
    [dateFormatter setDateFormat:@"dd-MMMM-yyyy HH:MM:ss"]; 
    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
    [dateFormatter setTimeZone:gmt]; 
    NSDate *date = [dateFormatter dateFromString:sourceString]; 

    return [dateFormatter stringFromDate:date]; 
} 

Из-за этого я получаю то же самое старое время без преобразования. поэтому, пожалуйста, дайте мне знать правильное решение.

ответ

1

Я не знаю какао, но если я правильно понимаю ваш код, вы никогда не говорите парсеру, что ваша исходная строка не GMT, а GMT-1.

Основываясь на собственном коде (и опять же, не зная какао), это то, что я считаю, что вам нужно сделать:

NSTimeZone *gmtminusone = [NSTimeZone timeZoneForSecondsFromGMT:-3600.0]; 
[dateFormatter setTimeZone:gmtminusone]; 
NSDate *date = [dateFormatter dateFromString:sourceString]; 
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setTimeZone:gmt]; 
return [dateFormatter stringFromDate:date]; 

Если он не работает сразу, может быть, это дает вам идея, что делать:

  1. Разберите строку с форматированием даты, установленным на GMT-1, чтобы вывести дату.
  2. Разберите дату с форматом даты, установленным в GMT, чтобы вывести строку.
+0

«GMT-1» не является сокращением по часовому поясу. Вопросителю необходимо указать любой часовой пояс, в котором он находится, либо по имени, либо по смещению. –

+0

@Peter, Как я уже сказал, я вообще не знаю какао - это включает в себя сокращения аббревиатуры часового пояса. Но, учитывая мой пример, OP, надеюсь, сможет выяснить, что делать в любом случае. Если вы знаете какао и знаете, что эта строка должна быть заменена, чтобы сделать то же самое, не стесняйтесь редактировать мой пост. –

+0

Спасибо Томас, я получил решение – Kishore

1

Строка даты не включает спецификацию зоны времени, поэтому даты форматировщик полагались на вас, чтобы сказать ему, что часовой пояс это в.

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setTimeZone:gmt]; 
NSDate *date = [dateFormatter dateFromString:sourceString]; 

Вы рассказали, что строка ввода была в GMT.

Необходимо указать формат даты, в какой часовой пояс находится дата. После того, как вы это сделали, вы можете сообщить форматиру, чтобы преобразовать строку в дату (dateFromString:), и она будет интерпретировать строку как представляющую дату в этом часовом поясе.

Затем, как только у вас есть такая интерпретированная дата, переключите часовой пояс форматирования на GMT и выведите строку (stringFromDate:). Эта строка будет представлять дату, преобразованную в GMT.

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