-1

如何获取月历开始和结束日期?

从屏幕截图中,我需要在 fscalender 中获得 2017 年 8 月 1 日和 2017 年 8 月 31 日吗?

当我滚动然后此方法调用但每次都获取当前日期

- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar;
{

}

谢谢!

在此处输入图像描述

4

5 回答 5

0
-(void)calendarCurrentPageDidChange:(FSCalendar *)calendar{
    [self.calendar selectDate:[self.calendar.currentPage fs_firstDayOfMonth]];
    [self.calendar selectDate:[self.calendar.currentPage fs_lastDayOfMonth]];
}
于 2017-08-01T04:57:51.223 回答
0

FSCalendar属性currentPage返回当前显示页面的开始日期 - 这是一个月或一周的第一天,具体取决于您是显示一个月还是一周。

然后使用NSCalendar方法查找以 开头的月或周的最后一天currentPage。有很多方法可以做到这一点;例如,添加一个NSDateComponents值或使用“下一个”方法之一,例如nextDateAfterDate:matchingUnit:value:options:.

高温高压

于 2017-07-31T09:34:37.377 回答
0

您可以根据需要使用这两种NSDate分类方法:

- (NSDate *)startDateOfMonth {
    NSCalendar *current = [NSCalendar currentCalendar];
    NSDate *startOfDay = [current startOfDayForDate:self];
    NSDateComponents *components = [current components:(NSCalendarUnitMonth | NSCalendarUnitYear) fromDate:startOfDay];
    NSDate *startOfMonth = [current dateFromComponents:components];
    return startOfMonth;
}

- (NSDate *)endDateOfMonth {
    NSCalendar *current = [NSCalendar currentCalendar];
    NSDateComponents *components = [[NSDateComponents alloc] init];
    components.month = 1;
    components.day = -1;
    NSDate *endOfMonth = [current dateByAddingComponents:components toDate:[self startDateOfMonth] options:NSCalendarSearchBackwards];
    return endOfMonth;
}

您需要将日期从您的转换FSCalendarNSDate

- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar {
    NSDate *date = ... //Conversion goes here

    NSDate *startDateOfMonth = [date startDateOfMonth];
    NSDate *endDateOfMonth = [date endDateOfMonth];

    // convert back if you need to
}
于 2017-07-31T08:34:55.547 回答
0

获取第一次约会

 - (void)calendarCurrentPageDidChange:(FSCalendar *)calendar;
    {
        NSLog(@"did change to page %@",[self.dateFormatter stringFromDate:calendar.currentPage]);

    }
于 2017-07-31T09:57:39.367 回答
-1

您自己获得当前月份的第一个和最后一个日期。无需从 FSCalendar 获取。为此,请参见下面的代码。

NDDate *currentDate = //Pass date which you get
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *comp = [gregorian components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay ) fromDate:currentDate];
[comp setMonth:[comp month]];
[comp setDay:1];
NSDate *firstDayDate = [gregorian dateFromComponents:comp];
[comp setMonth:[comp month]+1];
[comp setDay:0];
NSDate *lastDayDate = [gregorian dateFromComponents:comp];

NSLog(@"First : %@, Last : %@",firstDayDate,lastDayDate);

这样你就得到了第一个和最后一个日期。

于 2017-07-31T07:47:58.070 回答