Я хочу узнать текущее время, но я получил GMT. Что случилось? - PullRequest
1 голос
/ 17 марта 2012

Я хочу узнать текущее время, но я получил GMT. Я добавил язык, но он мне не помог. Я использую iPod touch. Что не так?

    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    NSLocale *locale =[NSLocale currentLocale];
    [dateFormatter setLocale:locale];
    dateFormatter.dateFormat =@"yyyy-MM-dd HH:mm:ss ZZZ";
    NSDate *date = [dateFormatter dateFromString:[[NSDate date] description]];

ОБНОВЛЕНИЕ: я использую NSDateFormatter, потому что мне нужно показать

2012-03-17 12:20:33 

вместо

2012-03-17 12:20:33 +0000

Ответы [ 4 ]

4 голосов
/ 17 марта 2012

Я нашел хорошее решение.

NSCalendar * calendar = [NSCalendar currentCalendar];
NSDateComponents * components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSSecondCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit
                                            fromDate:[NSDate date]];
NSString * stringDate = [NSString stringWithFormat:@"%d-%d-%d %d:%d:%d", components.year, components.month, components.day, components.hour, components.minute, components.second];

Другое решение

NSDate *date = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSTimeZone *zone = [NSTimeZone localTimeZone];
[formatter setTimeZone:zone];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSLog(@"Date %@",[formatter stringFromDate:date]);
3 голосов
/ 17 марта 2012

Ну, вы также можете

NSTimeZone* local = [NSTimeZone localTimeZone]; 
NSInteger secondsOffset = [localTimeZone secondsFromGMTForDate:[NSDate date]];

Тогда вы можете просто добавить его в вашу существующую дату.

1 голос
/ 17 марта 2012

Любопытно, почему вы вообще проходите через форматирование даты? NSDate *date = [NSDate date]; даст вам дату с текущим временем.

1 голос
/ 17 марта 2012

Ну, "ZZZ" - это формат даты, который указывает GMT.См. http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns

Кстати, не путайте (NS) локали с (NS) часовыми поясами.Они не одинаковы.Локали определяют стили, например, «01.02.2012» против «01.02.2012», часовые пояса определяют ... часовые пояса.

...