Objective c NSDate和x27中的负NSTIME间隔;s日期和时间间隔从现在起:
但是,该代码在2148中给出了日期:Objective c NSDate和x27中的负NSTIME间隔;s日期和时间间隔从现在起:,objective-c,ios,nsdate,Objective C,Ios,Nsdate,但是,该代码在2148中给出了日期: #import <Foundation/Foundation.h> #import <stdlib.h> int main(int argc, const char * argv[]) { @autoreleasepool { for(int i = 0; i < 30; i++) { NSDate* date = [NSDate dateWithTimeIntervalSi
#import <Foundation/Foundation.h>
#import <stdlib.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
for(int i = 0; i < 30; i++) {
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:(NSTimeInterval)-((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];
NSLog(@"%@", date);
}
}
return 0;
}
#导入
#进口
int main(int argc,const char*argv[]
{
@自动释放池{
对于(int i=0;i<30;i++){
NSDate*date=[NSDate date WITH TIMEIVERSICENSNOW:(NSTIMEIVERSIT)-(u_int32_t)i*12*60*60+arc4random_uniform(8*60*60));
NSLog(@“%@”,日期);
}
}
返回0;
}
它应该会从不久前生成半随机的日期和时间。正如Hot Clicks所说,这是由于在使数字为负数之后对NSTimeInterval施法,而不是先对数字求负数,然后再施法 该行的固定版本如下所示:
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:-(NSTimeInterval)((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];
无符号整数的负数是一个正数。@HotLicks感谢您在得到负数之前对NSTimeInterval进行强制转换。
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:-(NSTimeInterval)((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];