iphone ios integer nstimeinterval

iphone - Cómo convertir NSTimeInterval a int?



ios integer (5)

Asignación directa:

NSTimeInterval interval = 1002343.5432542; NSInteger time = interval; //time is now equal to 1002343

NSTimeInterval es un doble, por lo que si lo asigna directamente a un NSInteger (o int, si lo desea) funcionará. Esto cortará el tiempo al segundo más cercano.

Si desea redondear al segundo más cercano (en lugar de cortarlo), puede usar la ronda antes de realizar la tarea:

NSTimeInterval interval = 1002343.5432542; NSInteger time = round(interval); //time is now equal to 1002344

¿Cómo convierto NSTimeInterval en un valor entero?

Mi TimeInterval tiene el valor 83.01837 . Necesito convertirlo en 83 . Busqué en Google pero no pude encontrar ninguna ayuda.


De acuerdo con la documentación , NSTimeInterval es solo un double :

typedef double NSTimeInterval;

Puedes convertir esto a un int :

seconds = (int) myTimeInterval;

¡Cuidado con los desbordes, sin embargo!


En Swift 3.0

let timestamp = round(NSDate().timeIntervalSince1970)


Sospecho que los valores de NSTimeInterval de NSDate desbordarían un NSInteger. Es probable que quieras un largo tiempo. (Entero de 64 bits.) Esos pueden almacenar valores enteros de bocina-grande (-2 ^ 63 a 2 ^ 63 -1)

long long integerSeconds = round([NSDate timeIntervalSinceReferenceDate]);

EDITAR:

Parece que un NSInteger PUEDE almacenar un NSTimeInterval, al menos durante las próximas décadas. El timeIntervalSinceReferenceDate de la fecha actual es de aproximadamente 519,600,000, o aproximadamente 2 ^ 28. En un dispositivo de 32 bits, y NSInteger puede contener un valor de -2 ^ 31 a 2 ^ 31-1. (2 ^ 31 es 2,147,483,648


Tenía la necesidad de almacenar un NSDate en un número Swift. Utilicé el siguiente elenco, que funciona muy bien.

Double(startDateTime.timeIntervalSince1970)