iOS NSDate 시간 판단

3415 단어 oc
프로젝트에서 시간 스탬프에 따라 시간을 계산하여 일주일 내, 하루 내, 오늘 필기를 해야 나중에 참고하기 편리하다.
직접 상향 함수:
#define DATE_TIME_MINUTEX    60
#define DATE_TIME_HOURS      (60*60)
#define DATE_ONETHOUSAND     1000
#define DATE_TIME_DAYTIME    (24*60*60)
#define DATE_TIME_DAYTIMES   (24*60*60*2)
/**
 * string        
 */
- (NSString *)intervalSinceNow: (NSString *) theDate
{
        NSTimeInterval late = [theDate floatValue]/DATE_ONETHOUSAND;
        NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
        NSTimeInterval now=[dat timeIntervalSince1970]*1;
        NSString *timeString=@"";
        NSTimeInterval cha=now-late;
        if (cha/DATE_TIME_HOURS<1) {
            timeString = [NSString stringWithFormat:@"%f", cha/DATE_TIME_MINUTEX];
            timeString = [timeString substringToIndex:timeString.length-7];
            timeString=[NSString stringWithFormat:@"%@   ", timeString];
        }
        if (cha/DATE_TIME_HOURS>1 && cha/DATE_TIME_DAYTIME<1) {
            timeString = [NSString stringWithFormat:@"%f", cha/DATE_TIME_HOURS];
            timeString = [timeString substringToIndex:timeString.length-7];
            timeString=[NSString stringWithFormat:@"%@   ", timeString];
        }
        if (cha/DATE_TIME_DAYTIME>1 && cha/DATE_TIME_DAYTIMES<1) {
            timeString=@"  ";
        }
        if (cha/DATE_TIME_DAYTIMES>1)
        {
            timeString = [NSString stringWithFormat:@"%f", cha/DATE_TIME_DAYTIME];
            timeString = [timeString substringToIndex:timeString.length-7];
            timeString=[NSString stringWithFormat:@"%@  ", timeString];
        }
}

이번 주와 오늘의 메시지인지 판단하기
  
//          
-(BOOL)isTodayNews: (NSString *) theDate
{
    NSTimeInterval late = [theDate floatValue]/DATE_ONETHOUSAND;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"YYYY/MM/dd"];
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:late];
    NSString *dateSMS = [dateFormatter stringFromDate:date];
    NSDate *now = [NSDate date];
    NSString *dateNow = [dateFormatter stringFromDate:now];
    if ([dateSMS isEqualToString:dateNow]) {
        return YES;
    }
    else {
        return NO;
    }
}

//          
-(NSDate *)dateStartOfWeek:(NSDate *)date {
    NSCalendar *gregorian = [[NSCalendar alloc]
                             initWithCalendarIdentifier:NSGregorianCalendar] ;
    [gregorian setFirstWeekday:2]; //monday is first day
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:date];
    NSDateComponents *componentsToSubtract = [[NSDateComponents alloc] init] ;
    [componentsToSubtract setDay: - ((([components weekday] - [gregorian firstWeekday])
                                      + 7 ) % 7)];
    NSDate *beginningOfWeek = [gregorian dateByAddingComponents:componentsToSubtract toDate:date options:0];
    NSDateComponents *componentsStripped = [gregorian components: (NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit)
                                                        fromDate: beginningOfWeek];
    
    //gestript
    beginningOfWeek = [gregorian dateFromComponents: componentsStripped];
    return beginningOfWeek;
}

잘못된 점은 큰 신의 가르침을 바랍니다.

좋은 웹페이지 즐겨찾기