2013-05-10 3 views
-2

Мое текущее время устройства --- 2013-05-09 10:23 утраПроблема в coverting GMT время Местное время

преобразовать его ИНТ GMT с помощью следующего кода

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm a"; 

    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
    [dateFormatter setTimeZone:gmt]; 
    NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]]; 
    NSLog(@"time in GMT ------ %@",timeStamp); 

И Я получил из положить в

 time in GMT ------ 2013-05-10 04:53 AM 

тогда я нашел часовой пояс

NSTimeZone *localTime = [NSTimeZone systemTimeZone]; 
    NSLog(@"local timezone is------ %@",[localTime name]); 

из положить

local timezone is------ Asia/Kolkata 

Теперь мне нужно преобразовать вышеупомянутое время по Гринвичу местного time.I использовал следующий код

NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:[localTime name]]; 
    [dateFormatter setTimeZone:sourceTimeZone]; 
    NSDate *dateFromString = [dateFormatter dateFromString:timeStamp]; 
    NSLog(@"local time is ------- %@",dateFromString); 

Но я получаю неправильные из пут ..

local time is ------- 2013-05-09 19:23:00 +0000 

Почему это происходит? я должен получить по местному времени, как - 2013-05-09 10:23 утра

ответ

0

// получить текущую дату/время

NSDate *today = [NSDate date]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings 
[dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
NSString *currentTime = [dateFormatter stringFromDate:today]; 
[dateFormatter release]; 
NSLog(@"User's current time in their preference format:%@",currentTime); 
+0

Все это не решает вопрос. Это не объясняет, почему конечный результат показывает неправильное время. – rmaddy

0

Пожалуйста, мой дорогой мало усилий на Google означает, что сначала искать Ваш вопрос о Google и если вы не получите ответ в этом случае, поставьте свой вопрос на поток стека. И увидеть свой ответ на ссылке ниже ....

  1. iPhone: NSDate convert GMT to local time
  2. iphone time conversion gmt to local time
  3. Date/time conversion to user's local time - issue
1

Ваш timestamp строка в GMT. Это означает, что когда вы хотите преобразовать строку GMT обратно в NSDate, ваш формат даты должен быть установлен на GMT, а не на ваш часовой пояс. Сделав это, вы получите надлежащее NSDate.

И не забывайте, что при регистрации объекта NSDate он будет отображаться в GMT независимо от чего-либо еще.

0
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm a"; 

    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
    [dateFormatter setTimeZone:gmt]; 
    NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]]; 
    NSLog(@"time in GMT ------ %@",timeStamp); 



    NSTimeZone *localTime = [NSTimeZone systemTimeZone]; 
    NSLog(@"local timezone is------ %@",[localTime name]); 


    NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
    [dateFormatter setTimeZone:sourceTimeZone]; 
    NSDate *dateFromString = [dateFormatter dateFromString:timeStamp]; 
    NSLog(@"local time is ------- %@",dateFromString); 


    NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
    dateFormatter1.dateFormat = @"yyyy-MM-dd HH:mm"; 

    NSTimeZone *gmt1 = [NSTimeZone localTimeZone]; 
    [dateFormatter1 setTimeZone:gmt1]; 
    NSString *timeStamp1 = [dateFormatter1 stringFromDate:[NSDate date]]; 
    NSLog(@"local time is ------- %@",timeStamp1); 

Выход:

time in GMT ------ 2013-05-10 05:13 AM 
local timezone is------ Asia/Kolkata 
local time is ------- 2013-05-10 00:13:00 +0000 
local time is ------- 2013-05-10 10:43 
+0

Это не отвечает на вопрос. Целью является правильное преобразование 'timestamp' обратно в' NSDate'. – rmaddy

0

Попробуйте использовать этот код:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"]; 

    // get time zone 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]]; 
    NSDate *date = [NSDate date]; 
    NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]]; 
    date = [dateFormatter dateFromString:timeStamp]; 

    // change time zone 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Kolkata"]]; 
    // or you can use SystemTimeZone 
    // [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 

    NSString *strDateWithLocalTimeZone = [dateFormatter stringFromDate:date]; 

    NSLog(@"Local Time Zone Date %@", strDateWithLocalTimeZone); 
Смежные вопросы