Mi zona horaria local y predeterminada es GMT +5, pero cuando obtengo la fecha y hora de NSDate, me devuelve la fecha y la hora GMT.NSDate no devuelve mi zona horaria local/zona horaria predeterminada del dispositivo
Por ejemplo, el código y la salida de mi código, mientras que las pruebas en el dispositivo es como, [zona horaria GMT dispositivo de Islamabad 5]
NSTimeZone *lo = [NSTimeZone localTimeZone];
NSLog(@" - current local timezone is %@",lo); // GMT +5
2010-12-28 20:56:11.785 Done[484:307] - current local timezone is Local Time Zone (Asia/Karachi (GMT+05:00) offset 18000)
NSTimeZone *df = [NSTimeZone defaultTimeZone];
NSLog(@" - current default timezone is %@",df); // GMT +5
2010-12-28 20:56:11.790 Done[484:307] - current default timezone is Asia/Karachi (GMT+05:00) offset 18000
pero
NSDate *cDate = [NSDate date];
NSLog(@"current date by NSDate %@",cDate); //but NSDate show GMT
2010-12-28 20:56:11.794 Done[484:307] current date by NSDate 2010-12-28 15:56:11 GMT
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm";
//// NSTimeZone *gmt = [NSTimeZone ]
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT+05:00"];
[dateFormatter setTimeZone:gmt];
NSString *timeStamp = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@" date string object %@" ,timeStamp); // string From Date is GMT +5
2010-12-28 20:56:11.802 Done[484:307] date string object 2010-12-28T20:56
NSDate *datef = [dateFormatter dateFromString:timeStamp];
NSLog(@" date object %@" ,datef); // the date form above string gives again GMT
2010-12-28 20:56:11.809 Done[484:307] **date object 2010-12-28 15:56:00 GMT**
¿Por qué no dar NSDate locales ¿tiempo actual? Por favor, ayuda ...
Es hacer la codificación más simple . Como programador, siempre puedes asumir que el valor 'NSDate' está en GMT. De esta forma, solo tendrá que preocuparse por TimeZone cuando esté usando un 'NSDateFormatter' para mostrar la hora al usuario. – Tobias