如何在 ios 的 fscalendar 中获取月份的第一个日期和最后一个日期?
How can I get First date and Last date of month in fscalender in ios?
如何获取月历开始日期和结束日期?
根据屏幕截图,我需要在 fscalender 中获取 2017 年 8 月 1 日和 2017 年 8 月 31 日?
当我滚动时调用此方法但每次都获取当前日期
- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar;
{
}
谢谢!
你自己得到当月的第一个和最后一个日期。无需从 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);
通过这种方式您可以获得第一次和最后一次约会。
您可以根据需要使用这两种 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;
}
您需要将日期从 FSCalendar
转换为 NSDate
:
- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar {
NSDate *date = ... //Conversion goes here
NSDate *startDateOfMonth = [date startDateOfMonth];
NSDate *endDateOfMonth = [date endDateOfMonth];
// convert back if you need to
}
FSCalendar
属性 currentPage
returns 当前显示页面的开始日期 - 这是一个月或一周的第一天,具体取决于您是否正在显示一个月或一周。
然后使用 NSCalendar
方法查找以 currentPage
开头的月份或周的最后一天。有很多方法可以做到这一点;例如添加 NSDateComponents
值或使用 "next" 方法之一,例如 nextDateAfterDate:matchingUnit:value:options:
.
HTH
获取第一次约会
- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar;
{
NSLog(@"did change to page %@",[self.dateFormatter stringFromDate:calendar.currentPage]);
}
-(void)calendarCurrentPageDidChange:(FSCalendar *)calendar{
[self.calendar selectDate:[self.calendar.currentPage fs_firstDayOfMonth]];
[self.calendar selectDate:[self.calendar.currentPage fs_lastDayOfMonth]];
}
如何获取月历开始日期和结束日期?
根据屏幕截图,我需要在 fscalender 中获取 2017 年 8 月 1 日和 2017 年 8 月 31 日?
当我滚动时调用此方法但每次都获取当前日期
- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar;
{
}
谢谢!
你自己得到当月的第一个和最后一个日期。无需从 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);
通过这种方式您可以获得第一次和最后一次约会。
您可以根据需要使用这两种 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;
}
您需要将日期从 FSCalendar
转换为 NSDate
:
- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar {
NSDate *date = ... //Conversion goes here
NSDate *startDateOfMonth = [date startDateOfMonth];
NSDate *endDateOfMonth = [date endDateOfMonth];
// convert back if you need to
}
FSCalendar
属性 currentPage
returns 当前显示页面的开始日期 - 这是一个月或一周的第一天,具体取决于您是否正在显示一个月或一周。
然后使用 NSCalendar
方法查找以 currentPage
开头的月份或周的最后一天。有很多方法可以做到这一点;例如添加 NSDateComponents
值或使用 "next" 方法之一,例如 nextDateAfterDate:matchingUnit:value:options:
.
HTH
获取第一次约会
- (void)calendarCurrentPageDidChange:(FSCalendar *)calendar;
{
NSLog(@"did change to page %@",[self.dateFormatter stringFromDate:calendar.currentPage]);
}
-(void)calendarCurrentPageDidChange:(FSCalendar *)calendar{
[self.calendar selectDate:[self.calendar.currentPage fs_firstDayOfMonth]];
[self.calendar selectDate:[self.calendar.currentPage fs_lastDayOfMonth]];
}