iOS日历时间相关整理

1.当前月有多少天

NSCalendar *calendar = [NSCalendar currentCalendar];

NSRange range = [calendar rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]];

NSUInteger numberOfDaysInMonth = range.length;

NSLog(@"%lu", (unsigned long)numberOfDaysInMonth);

2.获取每月的第一天和最后一天

- (NSString *)getMonthBeginAndEndWith:(NSString *)dateStr{

    NSDateFormatter *format=[[NSDateFormatter alloc] init];

    [format setDateFormat:@"yyyy-MM"];

    NSDate *newDate=[format dateFromString:dateStr];

    double interval = 0;

    NSDate *beginDate = nil;

    NSDate *endDate = nil;

    NSCalendar *calendar = [NSCalendar currentCalendar];

    [calendar setFirstWeekday:2];//设定周一为周首日

    BOOL ok = [calendar rangeOfUnit:NSMonthCalendarUnit startDate:&beginDate interval:&interval forDate:newDate];

    //分别修改为 NSDayCalendarUnit NSWeekCalendarUnit NSYearCalendarUnit

    if (ok) {

        endDate = [beginDate dateByAddingTimeInterval:interval-1];

    }else {

        return @"";

    }

    NSDateFormatter *myDateFormatter = [[NSDateFormatter alloc] init];

    [myDateFormatter setDateFormat:@"YYYY年MM月dd日"];

    NSString *beginString = [myDateFormatter stringFromDate:beginDate];

    NSString *endString = [myDateFormatter stringFromDate:endDate];

    NSString *s = [NSString stringWithFormat:@"%@-%@",beginString,endString];

    return s;

}

//调用格式(yyyy-MM)

NSString *dateStr = [self getMonthBeginAndEndWith:@"2019-10"];

3.月份是星期几

- (NSDictionary *)weekdayStringWithDate:(NSDate *)date {

    //获取星期几

    NSDateComponents *componets = [[NSCalendar autoupdatingCurrentCalendar] components:NSCalendarUnitWeekday fromDate:date];

    NSInteger weekday = [componets weekday];//1代表星期日,2代表星期一,后面依次

    NSArray *weekArray = @[@{@"date":@"星期日",@"index":@"0"},@{@"date":@"星期一",@"index":@"1"},@{@"date":@"星期二",@"index":@"2"},@{@"date":@"星期三",@"index":@"3"},@{@"date":@"星期四",@"index":@"4"},@{@"date":@"星期五",@"index":@"5"},@{@"date":@"星期六",@"index":@"6"}];

    NSDictionary *weekDic = weekArray[weekday-1];

    return weekDic;

}

//传入NSDate类型

NSDate *date1 = [self getDate:dateStringArray[0]];

NSDate *date2 = [self getDate:dateStringArray[1]];

NSString *weekStr = [self weekdayStringWithDate:date1][@"date"];

4.时间字符串转NSDate

//时间字符串转Date

- (NSDate *)getDate:(NSString *)dataStr{


    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];


    [dateFormatter setDateFormat:@"yyyy年MM月dd日"];


    NSDate *date = [dateFormatter dateFromString:dataStr];


    return date;


}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大...
    真巧了_嘿阅读 2,827评论 0 7
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,803评论 1 9
  • ``` 时间和日历的计算在iOS开发中经常看到,经常看到大家在百度,开源中国等搜索这些答案。今天写个简单的时间和日...
    昊楷阅读 1,691评论 1 4
  • ######先说下需求:选择日期弹出日历(跟途牛,携程等差不多就行。。。行) 初识NSCalendar到写完日历的...
    只是个少年阅读 1,090评论 0 0
  • iOS开发中,经常会遇到各种各样的时间问题,8小时时差,时间戳,求时间间隔,农历等等。解决办法网上比比皆是,但大多...
    小李龍彪阅读 6,467评论 1 6