天天看点

NSString 转NSDate 之昨天、今天、明天

NSString 转NSDate 之昨天、今天、明天

NSDate *today = [NSDate dateWithString:@"2009-12-11 00:00:00 +0000"];  
     NSDate *yesterday = [NSDate dateWithString:@"2009-12-10 00:00:00 +0000"];  
     NSDate *thisWeek = [NSDate dateWithString:@"2009-12-06 00:00:00 +0000"];  
     NSDate *lastWeek = [NSDate dateWithString:@"2009-11-30 00:00:00 +0000"];  
     NSDate *thisMonth = [NSDate dateWithString:@"2009-12-01 00:00:00 +0000"];  
     NSDate *lastMonth = [NSDate dateWithString:@"2009-11-01 00:00:00 +0000"];  
    要求出上面的时间  

    NSCalendar *cal = [NSCalendar currentCalendar];  
    NSDateComponents *components = [cal components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:[[NSDate alloc] init]];  

    [components setHour:-[components hour]];  
    [components setMinute:-[components minute]];  
    [components setSecond:-[components second]];  
    NSDate *today = [cal dateByAddingComponents:components toDate:[[NSDate alloc] init] options:]; //This variable should now be pointing at a date object that is the start of today (midnight);  

    [components setHour:-];  
    [components setMinute:];  
    [components setSecond:];  
    NSDate *yesterday = [cal dateByAddingComponents:components toDate: today options:];  

    components = [cal components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[[NSDate alloc] init]];  

    [components setDay:([components day] - ([components weekday] - ))];   
    NSDate *thisWeek  = [cal dateFromComponents:components];  

    [components setDay:([components day] - )];  
    NSDate *lastWeek  = [cal dateFromComponents:components];  

    [components setDay:([components day] - ([components day] -))];   
    NSDate *thisMonth = [cal dateFromComponents:components];  

    [components setMonth:([components month] - )];   
    NSDate *lastMonth = [cal dateFromComponents:components];  

    NSLog(@"today=%@",today);  
    NSLog(@"yesterday=%@",yesterday);  
    NSLog(@"thisWeek=%@",thisWeek);  
    NSLog(@"lastWeek=%@",lastWeek);  
    NSLog(@"thisMonth=%@",thisMonth);  
    NSLog(@"lastMonth=%@",lastMonth);
           

NSDateFormatter 格式化

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

[dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];//EEEE为星期几,EEE为周几

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
           

NSDate 与 NSString 的互相转换:

由 NSDate 转换为 NSString:
// 将当前时间以字符串形式输出
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strDate = [dateFormatter stringFromDate:[NSDate date]];

由 NSString 转换为 NSDate:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:@"2010-08-04 16:01:03"];
           

对比时间转换成类似于几分钟前、几天前

**
后台数据格式一:NSString *time = @"2016-07-01 09:52:00";
======
**

// 距离1970年有多少秒
    NSDateFormatter *formatter11 = [[NSDateFormatter alloc] init];
    [formatter11 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date11 = [formatter11 dateFromString:time];
    NSTimeInterval dis = [date11 timeIntervalSince1970];

// 时间换算
    NSDate *currentDate = [NSDate date];  //(当前时间)
    NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:dis];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd";
    NSString *string = [formatter stringFromDate:date];

    NSTimeInterval spaceTime = [currentDate timeIntervalSinceDate:date];
    int second = (int)spaceTime;
    int minute = second / ;
    int hour = minute / ;
    if (minute < ) {
        _string = [NSString stringWithFormat:@"%@",@"刚刚"];
    }else if (hour <  && minute >= ) {
        _string = [NSString stringWithFormat:@"%d分钟前",minute];
    }else if (hour >=  && hour < ) {
        _string = [NSString stringWithFormat:@"%d小时前",hour];
    }else if (hour >=  && hour <  * ) {
        _string = [NSString stringWithFormat:@"%d天前",hour / ];
    }else if (hour >  * ) {
        _string = [NSString stringWithFormat:@"%@",string];
    }

    NSLog(@"%@",_string);

// 输出结果为:刚刚
           

另附:NSTimeInterval—时间戳对比判断 昨天、今天

http://blog.csdn.net/timtian008/article/details/67640470

继续阅读