2009-05-28 22 views
8

que estoy viendo un comportamiento extraño por tratar de conseguir segundos desde época en C. Este objetivo:Los comportamientos extraños con timeIntervalSince1970

NSString *nowTimestamp = [NSString stringWithFormat:@"%d", 
          [[NSDate date] timeIntervalSince1970]]; 

salidas 15907296, cuando la fecha y hora actual debe ser 1243555623 (05/28/2009 @ 7:08 p.m. EST). La hora del sistema en el iPhone es correcta. No puedo entender por mi vida lo que estoy haciendo mal. ¿Alguna recomendación?

Respuesta

31

timeIntervalSince1970 devuelve un NSTimeInterval, que es un typedef para el doble; % d no es el formateador correcto para imprimir un doble (desea% f).

+0

Ha, gracias, yo sabía que estaba haciendo algo estúpido. – Parrots

1

¿Está seguro de que el resultado de NSDate es un decimal int? Los documentos dicen que es un doble. Puedes intentar lanzar.

Además, a veces se obtendrá un valor de puntero hacia atrás en lugar del valor real, si algo es un NSNumber bajo las mantas, puede que tenga que utilizar intValue o doubleValue para obtener el contenido real de lo que está en la dirección.

+0

Sí, necesitará% f –

5

A medida que el regreso de [[NSDate date] timeIntervalSince1970]; es un doble, podría intentar esto:

NSString *nowTimestamp = [NSString stringWithFormat:@"%f", 
         [[NSDate date] timeIntervalSince1970]]; 
Cuestiones relacionadas