seconds
The number of seconds from the current date and time for the new date. Use a negative value to specify a date before the current date.
但是这段代码在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 dateWithTimeIntervalSinceNow:(NSTimeInterval)-((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];
NSLog(@"%@", date);
}
}
return 0;
}
它应该从近期产生半随机日期和时间。
答案 0 :(得分:7)
正如Hot Licks所说,这是因为在将数字设为负数而不是先取消数字后再投射到NSTimeInterval然后再投射它。
该行的固定版本将如下所示:
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:-(NSTimeInterval)((u_int32_t)i * 12 * 60 * 60 + arc4random_uniform(8 * 60 * 60))];