2015-07-02 4 views
0

Я использовал этот фрагмент, чтобы преобразовать заданную дату в строку. Но если дата имеет время менее 5:00, тогда результат предшествует дате. Например, эта дата: «07-01-15 05:00:00 +0000» будет работать правильно. Но в результате «07-01-15 04:49:00 +0000» в качестве результата будет иметься предыдущая дата.Преобразование NSDate в NSString с небольшой ошибкой

Любые предложения?

+(NSString *)stringFromGivenDate:(NSDate *)date 
{ 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"MM-dd-yy"; 
    NSString *dateString = [dateFormatter stringFromDate:date]; 
    NSLog(@"date: %@", dateString); 
    return dateString; 
} 
+0

какой "ранее даты"? –

ответ

4

NSDateFormatter по умолчанию задает часовой пояс для вашего часового пояса.

Но при преобразовании даты в строку изменяется время до GMT.

Таким образом, вы должны установить часовой пояс с помощью

dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"] 

или любой другой часовой пояс, который вы хотите (как @"GMT+5:30").

Так что ваш код будет как:

+(NSString *)stringFromGivenDate:(NSDate *)date 
{ 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"MM-dd-yy"; 
    dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"] 
    NSString *dateString = [dateFormatter stringFromDate:date]; 
    NSLog(@"date: %@", dateString); 
return dateString; 
} 
Смежные вопросы