Проблемы с dateformatter в iphone - PullRequest
       0

Проблемы с dateformatter в iphone

0 голосов
/ 10 августа 2011

Я получаю значение NSDate *newDate как 2011-08-12 13:00:00 +0000. Теперь, когда я пытаюсь преобразовать его в строку по формату даты следующим образом:

NSDateFormatter *dateFormatter= [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd h:mm:ss Z"];

NSString *datestr = [[dateFormatter stringFromDate:newDate] lowercaseString]; 

Но значение, которое я получаю для datestr, на 5:30 часов больше, чем значение newDate. Я не знаю, где я не прав. Я получаю значение для datestr как 2011-08-12 18:30:00 + 5:30 (что неверно).

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Это в основном преобразование времени в ваш местный часовой пояс.если вы этого не хотите, просто установите время для форматера даты:

[dateFormatter setTimeZone:[NSTimeZone <use any of the functions below to get your desired one>]];

Ссылка на документацию: http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSTimeZone_Class/

Creating and Initializing Time Zone Objects
+ timeZoneWithAbbreviation:
+ timeZoneWithName:
+ timeZoneWithName:data:
+ timeZoneForSecondsFromGMT:
– initWithName:
– initWithName:data:
+ timeZoneDataVersion
Working with System Time Zones
+ localTimeZone
+ defaultTimeZone
+ setDefaultTimeZone:
+ resetSystemTimeZone
+ systemTimeZone
0 голосов
/ 10 августа 2011

Похоже, это должен быть часовой пояс / UTC. Дата, вероятно, возвращается в глобальном / универсальном времени, а вам нужно местное время.

Согласно документации IOS: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html - кажется, вы можете попытаться включить локаль, чтобы указать, какой часовой пояс вы хотите.

NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:118800];

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormatter setLocale:usLocale];

NSLog(@"Date for locale %@: %@",
  [[dateFormatter locale] localeIdentifier], [dateFormatter stringFromDate:date]);
...