NSCalendar、NSDateComponents

1.經過日期得星期

- (NSString*)getWeekDayWithYear:(NSString*)year month:(NSString*)month day:(NSString*)day
{
    NSDateComponents *_comps = [[NSDateComponents alloc] init];
    [_comps setDay:[day integerValue]];
    [_comps setMonth:[month integerValue]];
    [_comps setYear:[year integerValue]];
    NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *_date = [gregorian dateFromComponents:_comps];
    NSDateComponents *weekdayComponents =
    [gregorian components:NSWeekdayCalendarUnit fromDate:_date];
    long int _weekday = [weekdayComponents weekday];
    NSLog(@"_weekday::%ld",_weekday);

    NSString *weekDay = @"";
    switch (_weekday) {
        case 1: weekDay = @"週日";    break;
        case 2: weekDay = @"週一";    break;
        case 3: weekDay = @"週二";    break;
        case 4: weekDay = @"週三";    break;
        case 5: weekDay = @"週四";    break;
        case 6: weekDay = @"週五";    break;
        case 7: weekDay = @"週六";    break;
        default:break;
    }
    return weekDay;
}

2.兩個時間差

- (NSString *)dateTimeDifferenceWithStartTime:(NSString *)startTime endTime:(NSString *)endTime{
    NSDateFormatter *date = [[NSDateFormatter alloc]init];
    [date setDateFormat:@"yyyyMMddHHmmss"];//startTime的格式
    NSDate *startD =[date dateFromString:startTime];
    NSDate *endD = [date dateFromString:endTime];
    NSTimeInterval start = [startD timeIntervalSince1970]*1;
    NSTimeInterval end = [endD timeIntervalSince1970]*1;
    NSTimeInterval value = end - start;
    int second = (int)value %60;
    int minute = (int)value /60%60;
    int house = (int)value / (24 * 3600)%3600 +  (int)value / 3600;
    NSString *str = [NSString stringWithFormat:@"%.2d:%.2d:%.2d",house,minute,second];
    return str;
}

3.距離目前時間的

-(NSString *)getDateDisplayString:(long long) miliSeconds{
    
    NSTimeInterval tempMilli = miliSeconds;
    NSTimeInterval seconds = tempMilli/1000.0;
    NSDate *myDate = [NSDate dateWithTimeIntervalSince1970:seconds];
    
    NSCalendar *calendar = [ NSCalendar currentCalendar ];
    int unit = NSCalendarUnitDay | NSCalendarUnitMonth |  NSCalendarUnitYear ;
    NSDateComponents *nowCmps = [calendar components:unit fromDate:[ NSDate date ]];
    NSDateComponents *myCmps = [calendar components:unit fromDate:myDate];
    
    NSDateFormatter *dateFmt = [[ NSDateFormatter alloc ] init ];
    if (nowCmps.year != myCmps.year) {
        dateFmt.dateFormat = @"yyyy-MM-dd HH:mm";
    } else {
        if (nowCmps.day==myCmps.day) {
            dateFmt.dateFormat = @"今天 HH:mm";
        } else if((nowCmps.day-myCmps.day)==1) {
            dateFmt.dateFormat = @"昨天 HH:mm";
        } else {
            dateFmt.dateFormat = @"MM-dd HH:mm";
        }
    }
    return [dateFmt stringFromDate:myDate];
}
相關文章
相關標籤/搜索