iOS:新浪微博/QQ説などの公開時間をフォーマットする

6167 ワード

紹介:いくつかの社交ツールについて、私たちはいくつかの話や気持ちなどを発表することができます.例えば、新浪微博、QQ、微信など、発表に成功した後、上には発表の時間があります.
この時間は具体的なNSDateタイプではなく、フォーマットされた一般的な基準に合致するモードです.例えば、前の月、前の週、前の日、十数分前、さっきなどに発表されました.
以下に2つの具体的なテストDemoを示します.
ヘッダファイル:
// ViewController.m //   //
// Created by mac on 16/1/26. // Copyright © 2016  mac. All rights reserved. // 
#import "ViewController.h"

#define knewsTimeFormat @"yyyyMMddHHmmss" // 

#define kcreatedDateFormat @"EEE MMM dd HH:mm:ss Z yyyy" // 

#define kLocaleIdentifier @"en_US"  // 

@interface ViewController () @end

@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; 
// 
    NSString *str = @"20160126132609";  // 2016/01/26 13:26:09
    NSLog(@"%@",[self newsTime:str]); // 
    NSString *str2 = @"Tue Jan 26 13:50:08 +0800 2016"; NSLog(@"%@",[self formatCreatedDate:str2]);
}

テスト1:
//
- (NSString *)newsTime:(NSString *)newsTimes { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = knewsTimeFormat; formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:kLocaleIdentifier]; NSDate *date = [formatter dateFromString:newsTimes]; NSDate *now = [NSDate date]; //  
    NSTimeInterval interval = [now timeIntervalSinceDate:date]; NSString *format; if (interval <= 60) { format = @" "; } else if(interval <= 60*60){ format = [NSString stringWithFormat:@" %.f ", interval/60]; } else if(interval <= 60*60*24){ format = [NSString stringWithFormat:@" %.f ", interval/3600]; } else if (interval <= 60*60*24*7){ format = [NSString stringWithFormat:@" %d ", (int)interval/(60*60*24)]; } else if (interval > 60*60*24*7 & interval <= 60*60*24*30 ){ format = [NSString stringWithFormat:@" %d ", (int)interval/(60*60*24*7)]; }else if(interval > 60*60*24*30 ){ format = [NSString stringWithFormat:@" %d ", (int)interval/(60*60*24*30)]; } formatter.dateFormat = format; return [formatter stringFromDate:date]; }

出力結果:
2016-01-26 14:32:28.324  [1809:109947]  1 

 
 
 
テスト2:
//
-(NSString *)formatCreatedDate:(NSString *)newsTimes { NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = kcreatedDateFormat; formatter.locale = [[NSLocale alloc]initWithLocaleIdentifier:kLocaleIdentifier]; NSDate *date = [formatter dateFromString:newsTimes]; NSDate *now = [NSDate date]; //  
    NSTimeInterval timeInterval = [now timeIntervalSinceDate:date]; if(timeInterval < 60) //1 
 { return @" "; } else if(timeInterval < 60*60)  //1 
 { return [NSString stringWithFormat:@"%d ",(int)timeInterval/60]; } else if(timeInterval < 60*60*24) //1 
 { return [NSString stringWithFormat:@"%d ",(int)timeInterval/60/60]; } return [NSString stringWithFormat:@"%.1lf",timeInterval]; } @end

出力結果:
2016-01-26 14:32:28.325  [1809:109947] 42