美文网首页
OC时间工具类

OC时间工具类

作者: 曹来东 | 来源:发表于2019-07-05 10:19 被阅读0次

源项目地址 感谢原作者

//字符串时间 专程NSDate 2019-06-01
    // 创建日期格式化对象
    NSDateFormatter *format = [[NSDateFormatter alloc] init];
    [format setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    // str1
    [format setDateFormat:@"yyyy-MM-dd"];
    NSDate *date1 = [format dateFromString:self.date];
    
    
    NSLog(@"%@", date1);
    [self firstWeekDayInThisMonth:date1];

.h文件

/** 当前日期所在月的第几天 */
- (NSInteger)dayInDate:(NSDate *)date;
/** 当前日期所在年的第几月 */
- (NSInteger)monthInDate:(NSDate *)date;
/** 当前日期所在年 */
- (NSInteger)yearInDate:(NSDate *)date;
/** 当前日期所在月的第一天是周几 */
- (NSInteger)firstWeekDayInThisMonth:(NSDate *)date;
/** 当前日期所在月有多少天 */
- (NSInteger)daysInThisMonth:(NSDate *)date;
/** 当前日期的上个月日期 */
- (NSDate *)preMonthToThisMonth:(NSDate *)date;
/** 当前日期的下一个月日期 */
- (NSDate *)nextMonthToThisMonth:(NSDate *)date;

.m文件


#pragma mark 当前日期所在月的第几天
- (NSInteger)dayInDate:(NSDate *)date
{
    return [[self componentsFromeDate:date] day];
}
#pragma mark 当前日期所在年的第几月
- (NSInteger)monthInDate:(NSDate *)date
{
    return [[self componentsFromeDate:date] month];
}
#pragma mark 当前日期所在年
- (NSInteger)yearInDate:(NSDate *)date
{
    return [[self componentsFromeDate:date] year];
}
#pragma mark 当前日期所在月的第一天是周几
- (NSInteger)firstWeekDayInThisMonth:(NSDate *)date
{
    NSCalendar *calendar = [NSCalendar currentCalendar];
    [calendar setFirstWeekday:1]; // 1.Sun(周日) 2.Mon(周一) ... 7.Sat(周六)
    NSDateComponents *components = [self componentsFromeDate:date];
    [components setDay:1];
    NSDate *firstDayOfMonth = [calendar dateFromComponents:components];
    NSUInteger firstWeekday = [calendar ordinalityOfUnit:NSCalendarUnitWeekday inUnit:NSCalendarUnitWeekOfMonth forDate:firstDayOfMonth];
    return firstWeekday - 1;
}
#pragma mark 当前日期所在月有多少天
- (NSInteger)daysInThisMonth:(NSDate *)date
{
    NSRange daysRange = [[NSCalendar currentCalendar] rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
    return daysRange.length;
}
#pragma mark 当前日期的上个月日期
- (NSDate *)preMonthToThisMonth:(NSDate *)date
{
    NSDateComponents *components = [[NSDateComponents alloc] init];
    components.month = -1; // 默认是0 上一个是(-1) 下一个是(+1)
    NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:date options:0];
    return newDate;
}
#pragma mark 当前日期的下一个月日期
- (NSDate *)nextMonthToThisMonth:(NSDate *)date
{
    NSDateComponents *components = [[NSDateComponents alloc] init];
    components.month = +1; // 默认是0 上一个是(-1) 下一个是(+1)
    NSDate *newDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:date options:0];
    return newDate;
}

- (NSDateComponents *)componentsFromeDate:(NSDate *)date
{
    NSDateComponents *components = [[NSCalendar currentCalendar] components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay) fromDate:date];
    return components;
}

相关文章

网友评论

      本文标题:OC时间工具类

      本文链接:https://www.haomeiwen.com/subject/qqkshctx.html