如何将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)