Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 生成当月的随机日期_Iphone_Objective C - Fatal编程技术网

Iphone 生成当月的随机日期

Iphone 生成当月的随机日期,iphone,objective-c,Iphone,Objective C,我想得到当前月份的随机日期 有什么简单的方法可以得到一个月的随机日期吗 NSDate *today = [NSDate date]; NSCalendar *calendar = [NSCalendar currentCalendar]; NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; NSDateComponents *dateComponents = [cal

我想得到当前月份的随机日期

有什么简单的方法可以得到一个月的随机日期吗

NSDate *today = [NSDate date]; 
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSDateComponents *dateComponents = [calendar components:unitFlags fromDate:today];
NSRange days = [calendar rangeOfUnit:NSDayCalendarUnit 
                       inUnit:NSMonthCalendarUnit 
                      forDate:today];
要生成随机数,请使用

int r = arc4random() % days.length;
然后创建一个日期

[dateComponents setDay:r];
NSDate *startDate = [calendar dateFromComponents:dateComponents];
希望这有帮助:)

Swift版本:

let date = Date()
let calendar = Calendar.current
var dateComponents = calendar.dateComponents([.year, .month, .day], from: date)
guard
    let days = calendar.range(of: .day, in: .month, for: date),
    let randomDay = days.randomElement()
else {
        return nil
}
dateComponents.setValue(randomDay, for: .day)
return calendar.date(from: dateComponents)

对当前月份的天数使用随机函数Hi将建议您进行编辑(关于:组件和创建实际日期…+1!请注意,为了获得更好的分布,应使用random_uniform()。请参阅此评论了解更多详细信息:好的,这是一个很好的评论。但请您在回答的最后一行告诉我
[c dateFromComponents:dateComponents]中
c
的含义好吗那是日历,那是我的错误