2011-08-17 19 views
6

Estoy tratando de obtener la fecha actual con la adición de la zona horaria del dispositivo, pero se muestra 1 h tarde esa fecha original. Creo que tengo problemas con DaylightSavingTime. Cómo deshabilitar isDaylightSavingTime = FALSE.Cómo obtener NSDate actual para el simulador Fecha? iPhone Sdk

Este es el código, he utilizado ..

NSDate *date = [NSDate Date]; 
NSTimeZone *currentTimeZon = [NSTimeZone localTimeZone]; 
if ([currentTimeZon isDaylightSavingTime]) 
{ 
    NSLog(@"East coast is NOT on DT"); 
} 
else 
{ 
    NSLog(@"East coast is on DT"); 

} 
NSTimeInterval timeZoneOffset = [currentTimeZon secondsFromGMTForDate:currentDate]; 
NSTimeInterval gmtTimeInterval = [date timeIntervalSinceReferenceDate] - timeZoneOffset; 
NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval]; 
NSLog(@"### Announcement gmtDate = %@",gmtDate); 

Me estoy haciendo tiempo con diferencia 1 hora, la fecha es perfact.

+1

Solo hay un NSDate para cada momento (no importa dónde se encuentre). Si desea imprimir la fecha en una zona horaria diferente, use NSDateFormatter. –

+0

Ya, pero quiero una función genérica que cambie automáticamente de acuerdo con el cambio de zona horaria. hay un problema cuando isDaylightSavingTime = FALSE. entonces quiero establecer isDaylightSavingTime = TRUE pero no puedo hacer eso – Sujal

Respuesta

1

Use NSCalendar, entiende las zonas horarias, los ahorros de luz diurna, etc. Como @albertamg dice, NSDate es solo el tiempo desde una referencia en UTC (GMT), no tiene otro concepto.

Cuestiones relacionadas