How do I convert NSTimeInterval into an Integer value?
My TimeInterval holds the value 83.01837
. I need to convert it into 83
. I have googled but couldn't find any help.
How do I convert NSTimeInterval into an Integer value?
My TimeInterval holds the value 83.01837
. I need to convert it into 83
. I have googled but couldn't find any help.
I suspect that NSTimeInterval values from NSDate would overflow an NSInteger. You'd likely want a long long. (64 bit integer.) Those can store honking-big integer values (-2^63 to 2^63 -1)
EDIT:
It looks like an NSInteger CAN store an NSTimeInterval, at least for the next couple of decades. The current date's timeIntervalSinceReferenceDate is about 519,600,000, or about 2^28. On a 32 bit device, and NSInteger can hold a value from -2^31 to 2^31-1. (2^31 is 2,147,483,648
Direct assignment:
NSTimeInterval is a double, so if you assign it directly to a NSInteger (or int, if you wish) it'll work. This will cut off the time to the nearest second.
If you wish to round to the nearest second (rather than have it cut off) you can use round before you make the assignment:
I had a need to store an NSDate in a Swift Number. I used the following cast which is working great.
In Swift 3.0
According to the documentation,
NSTimeInterval
is just adouble
:You can cast this to an
int
:Watch out for overflows, though!