iPhone: Convert date string to a relative time stamp

后端 未结 11 1139
醉梦人生
醉梦人生 2020-11-27 09:30

I\'ve got a timestamp as a string like:

Thu, 21 May 09 19:10:09 -0700

and I\'d like to convert it to a relative time stamp like

11条回答
  •  野性不改
    2020-11-27 10:14

    There are already a lot of answers that come to the same solution but it can't hurt to have choices. Here's what I came up with.

    - (NSString *)stringForTimeIntervalSinceCreated:(NSDate *)dateTime
    {
        NSDictionary *timeScale = @{@"second":@1,
                                    @"minute":@60,
                                    @"hour":@3600,
                                    @"day":@86400,
                                    @"week":@605800,
                                    @"month":@2629743,
                                    @"year":@31556926};
        NSString *scale;
        int timeAgo = 0-(int)[dateTime timeIntervalSinceNow];
        if (timeAgo < 60) {
            scale = @"second";
        } else if (timeAgo < 3600) {
            scale = @"minute";
        } else if (timeAgo < 86400) {
            scale = @"hour";
        } 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 %@%@ ago", timeAgo, scale, s];
    }
    

提交回复
热议问题