2014-11-20 5 views
0

Я конвертирую дату в соответствии с часовым поясом, и у меня есть еще одно требование - формат даты. Теперь я получаю дату в формате 12/15/14, 5:00 AM, но я хочу ее в формате «18 ноября 2014 года в 5:15 вечера». Я не получаю надлежащего вывода в соответствии с моим форматом даты. Возможно ли это в «Objective C» .My код:формат даты не работает должным образом

-(NSString *)dateFormater : (NSString *)dateStr 
{ 
    //NSString *dateStr = @"2014-11-30T21:25:00+00:00"; 

    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 

    [dateFormatter1 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssz"]; 
    // [dateFormatter1 setDateFormat:@"dd MMM,yyyy'T'HH:mm:ssz"]; 

    NSDate *date = [dateFormatter1 dateFromString:dateStr]; 

    NSLog(@"date : %@",date); 


    NSTimeZone *currentTimeZone = [NSTimeZone localTimeZone]; 

    NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"]; 


    NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:date]; 

    NSInteger gmtOffset = [utcTimeZone secondsFromGMTForDate:date]; 

    NSTimeInterval gmtInterval = currentGMTOffset - gmtOffset; 

    NSDate *destinationDate = [[NSDate alloc] initWithTimeInterval:gmtInterval sinceDate:date]; 

    NSDateFormatter *dateFormatters = [[NSDateFormatter alloc] init]; 

// [dateFormatters setDateFormat:@"dd-MMM-yyyy hh:mm"]; 
[dateFormatters setDateFormat:@"dd MMM, yyyy hh:mm a"]; 

[dateFormatters setDateStyle:NSDateFormatterShortStyle]; 

[dateFormatters setTimeStyle:NSDateFormatterShortStyle]; 

[dateFormatters setDoesRelativeDateFormatting:YES]; 

[dateFormatters setTimeZone:[NSTimeZone systemTimeZone]]; 

dateStr = [dateFormatters stringFromDate: destinationDate]; 

NSLog(@"DateString : %@", dateStr); 
return dateStr; 

} 

ответ

2

Вы формат строка dd MMM, yyyy hh:mm a является правильной, но после установки строки формата вы изменяете его снова. Удалить эти строки:

[dateFormatters setDateStyle:NSDateFormatterShortStyle]; 

[dateFormatters setTimeStyle:NSDateFormatterShortStyle]; 

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

dateStr = [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterMediumStyle timeStyle:NSDateFormatterShortStyle]; 
+0

Большое спасибо за ответ. Я попробовал ваше решение, но он отправляет пустую строку, когда я удаляю эти две строки. У вас есть другое решение для моего формата даты. – chaaruu

+0

Ваше редактирование работает. Большое спасибо. – chaaruu

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