生成当月的随机日期

时间:2012-07-09 04:37:54

标签: iphone objective-c

我想获得当月的随机日期。

有没有简单的方法来获取当月的随机日期?

2 个答案:

答案 0 :(得分:14)

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];

希望这会有所帮助:)

答案 1 :(得分:1)

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)