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!
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)