iOS: 格式化新浪微博/QQ说说等等的发布时间

简介:

介绍:对于一些社交工具,我们可以发布一些说说或者心情什么的,如新浪微博,QQ,微信等,发布成功后,上面都会有一个发布的时间。

这个时间并不是具体的NSDate类型,而是经过格式化过的符合一般标准的模式,例如:发布于前一个月、前一个星期、前一天、十几分钟前、刚刚等。

下面就给出两个具体的测试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]);
}
复制代码

测试一:

复制代码
//方式一: 获取发布时间
- (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小时

 

 

 

测试二:

复制代码
//方式二: 获取发布时间
-(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分钟前

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5160381.html ,如需转载请自行联系原作者
相关文章
|
存储 安全 JavaScript
2022完整iOS APP发布App Store上架流程指南
2022完整iOS APP发布App Store上架流程指南
1029 0
2022完整iOS APP发布App Store上架流程指南
|
开发者 iOS开发
iOS开发—发布到appstore
iOS开发—发布到appstore
iOS开发—发布到appstore
|
Linux iOS开发 开发者
2022最新最全升级版【精品工具】用Appuploader发布上传iOS APP上架流程简单快速
2022最新最全升级版【精品工具】用Appuploader发布上传iOS APP上架流程简单快速
2022最新最全升级版【精品工具】用Appuploader发布上传iOS APP上架流程简单快速
|
安全 网络协议 API
2022最新iOS打包、发布与证书体系详解
2022最新iOS打包、发布与证书体系详解
2022最新iOS打包、发布与证书体系详解
|
Android开发 iOS开发
IOS证书(.p12)发布和描述文件申请教程
IOS证书(.p12)发布和描述文件申请教程
IOS证书(.p12)发布和描述文件申请教程
|
安全 网络协议 API
2022最新iOS打包、发布与证书体系详解
2022最新iOS打包、发布与证书体系详解
2022最新iOS打包、发布与证书体系详解
|
开发工具 iOS开发 开发者
iOS应用程序发布步骤
iOS应用程序发布步骤
115 0
iOS应用程序发布步骤
|
开发者 iOS开发
如何在IOS上发布到安排【app store】
如何在IOS上发布到安排【app store】
|
编解码 iOS开发 开发者
如何在IOS上发布APP
如何在IOS上发布APP
|
移动开发 网络协议 Java
移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!
RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统。RainbowChat源于真实运营的产品,解决了大量的屏幕适配、细节优化、机器兼容问题(可自行下载体验:专业版下载安装)。 * RainbowChat可能是市面上提供im即时通讯聊天源码的,唯一一款同时支持TCP、UDP两种通信协议的IM产品(通信层基于开源IM聊天框架 MobileIMSDK 实现)。
142 0
移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!
下一篇
无影云桌面