2015-12-23 3 views
0

Я получаю ниже формат даты от ответаформат даты и времени в приложении IOS

2015-12-23 05:17:04 

Но я хочу, чтобы проверить дату и время, как,

дата == сегодня? дата == вчера?

время == 1 час время == 2 часа до 9 часов

, как это сделать?

+0

http://stackoverflow.com/questions/2331129/how-to-determine-if-an-nsdate-is-today это может помочь вам –

+0

http://stackoverflow.com/questions/5388551/how-to-compare-time –

+0

На какое-то время вы хотите получить час между двумя датами или часами конкретной даты? –

ответ

1

Используйте этот метод дает вам NSString назад. вы можете сравнить строку или время в методе.

-(NSString*)AgoStringFromTime:(NSDate*)dateTime 
{ 
    NSDictionary *timeScale = @{@"sec" :@1, 
           @"min" :@60, 
           @"hr" :@3600, 
           @"day" :@86400, 
           @"week" :@605800, 
           @"month":@2629743, 
           @"year" :@31556926}; 
    NSString *scale; 
    int timeAgo = 0-(int)[dateTime timeIntervalSinceNow]; 

    if (timeAgo < 60) { 
     scale = @"sec"; 
    } else if (timeAgo < 3600) { 
     scale = @"min"; 
    } else if (timeAgo < 86400) { 
     scale = @"hr"; 
    } else if (timeAgo < 605800) { 
     scale = @"day"; 
    } else if (timeAgo < 2629743) { 
     scale = @"week"; 
    } else if (timeAgo < 31556926) { 
     scale = @"month"; 
    } else { 
     scale = @"year"; 
    } 

    timeAgo = timeAgo/[[timeScale objectForKey:scale] integerValue]; 
    NSString *s = @""; 
    if (timeAgo > 1) { 
     s = @"s"; 
    } 

    return [NSString stringWithFormat:@"%d %@%@", timeAgo, scale, s]; 
} 
+1

Этот ответ прекрасен, как я хочу, но его единственное возвращение сегодня, вчера и отдых ... Но я хочу, как вчера в 9:50 –

+1

@Florence звучит хорошо. За вчерашний день вы можете поставить логику, если метод вернет «день». вы можете использовать библиотеку NSDate + NVTimerAgo, надеюсь, это поможет вам. –

+0

@Florence. Спасибо. –

1

NSDate *date = [NSDate date]; 
 

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

 
dateFormatter.dateFormat = [NSString stringWithFormat:@"yyyyMMddHHmmss"]; 
 

 
NSString *now = [dateFormatter stringFromDate:date];

Вы можете попробовать выше код

Наилучшие пожелания

1

1.frist вы можете форматировать строку на сегодняшний день, как это:

+ (NSDate *)dateFromString:(NSString *)dateString { 
if (!dateString) { 
    return nil; 
} 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat: @"yyyy-MM-dd HH:mm:ss"]; 
[formatter setLocale:[NSLocale currentLocale]]; 
NSDate *date= [formatter dateFromString:dateString]; 

return date; 
} 

2.Then, вы можете использовать методы NSDate,

+ (instancetype)date;//get current 
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)refDate;//Returns the interval between the receiver and another given date. 
2

Чтобы проверить, является ли дата сегодняшняя, вчерашняя, завтрашняя дата и т. д. ... вы можете использовать NSDate-Extensions

ex :

NSDate *date = [self convertStringToDate:@"2015-12-24 12:40:04" formate:@"yyyy-MM-dd HH:mm:ss"]; 
NSLog(@"%d", [date isToday]); 
NSLog(@"%d", [date isTomorrow]); 
NSLog(@"%d", [date isYesterday]); 

- (NSDate *)convertStringToDate: (NSString *)date formate:(NSString *)formate { 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
    [dateFormat setDateFormat:formate]; 
    return [dateFormat dateFromString:date]; 
} 
Смежные вопросы