如何将NSTimeInterval转换为int?
如何将NSTimeInterval转换为整数值?
我的TimeInterval值为83.01837
。 我需要把它转换成83
。 我GOOGLE了,但找不到任何帮助。
直接分配:
NSTimeInterval interval = 1002343.5432542; NSInteger time = interval; //time is now equal to 1002343
NSTimeInterval是一个双精度型,所以如果你直接把它分配给一个NSInteger(或者int,如果你愿意的话)就可以工作。 这将把时间切断到最近的秒钟。
如果你想四舍五入到最接近的秒数(而不是截断),你可以在做任务之前使用一轮:
NSTimeInterval interval = 1002343.5432542; NSInteger time = round(interval); //time is now equal to 1002344
根据文档 , NSTimeInterval
只是一个double
:
typedef double NSTimeInterval;
你可以把它转换成int
:
seconds = (int) myTimeInterval;
不过要注意溢出!
我怀疑来自NSDate的NSTimeInterval值会溢出一个NSInteger。 你可能需要很长时间。 (64位整数。)那些可以存储大声的整数值(-2 ^ 63到2 ^ 63 -1)
long long integerSeconds = round([NSDate timeIntervalSinceReferenceDate]);
编辑:
看起来像一个NSInteger CAN存储NSTimeInterval,至less在接下来的几十年。 当前date的timeIntervalSinceReferenceDate约为5.196亿,约为2 ^ 28。 在32位设备上,NSInteger可以保存从-2 ^ 31到2 ^ 31-1的值。 (2 ^ 31是2,147,483,648
在Swift 3.0中
let timestamp = round(NSDate().timeIntervalSince1970)
我需要将NSDate存储在Swift数字中。 我用了下面这个效果很好的模型。
Double(startDateTime.timeIntervalSince1970)