Pra*_*ypa 36 iphone integer nstimeinterval ios
如何将NSTimeInterval转换为Integer值?
我的TimeInterval保存了该值83.01837.我需要把它转换成83.我用Google搜索但找不到任何帮助.
Aar*_*man 63
直接分配:
NSTimeInterval interval = 1002343.5432542;
NSInteger time = interval;
//time is now equal to 1002343
Run Code Online (Sandbox Code Playgroud)
NSTimeInterval是一个double,所以如果你直接将它分配给一个NSInteger(或int,如果你愿意的话)它就可以了.这将截止时间缩短到最接近的秒数.
如果你希望舍入到最接近的秒(而不是切断它),你可以在作出任务之前使用round:
NSTimeInterval interval = 1002343.5432542;
NSInteger time = round(interval);
//time is now equal to 1002344
Run Code Online (Sandbox Code Playgroud)
根据文档,NSTimeInterval只是一个double:
typedef double NSTimeInterval;
Run Code Online (Sandbox Code Playgroud)
您可以将其转换为int:
seconds = (int) myTimeInterval;
Run Code Online (Sandbox Code Playgroud)
但请注意溢出!
在Swift 3.0中
let timestamp = round(NSDate().timeIntervalSince1970)
Run Code Online (Sandbox Code Playgroud)
我怀疑来自NSDate的NSTimeInterval值会溢出NSInteger.你可能想要很长时间.(64位整数.)那些可以存储鸣喇叭大整数值(-2 ^ 63到2 ^ 63 -1)
long long integerSeconds = round([NSDate timeIntervalSinceReferenceDate]);
Run Code Online (Sandbox Code Playgroud)
它似乎是一个NSInteger CAN存储NSTimeInterval,至少在接下来的几十年里.当前日期的timeIntervalSinceReferenceDate大约是519,600,000,或大约2 ^ 28.在32位设备上,NSInteger可以保存从-2 ^ 31到2 ^ 31-1的值.(2 ^ 31是2,147,483,648
| 归档时间: |
|
| 查看次数: |
66658 次 |
| 最近记录: |