博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios开发处理服务器返回的时间字符串
阅读量:5146 次
发布时间:2019-06-13

本文共 14571 字,大约阅读时间需要 48 分钟。

#import 
void other();void string2date();int main(int argc, const char * argv[]) { @autoreleasepool { other(); string2date(); } return 0;}void other(){ // 获得NSCalendar NSCalendar *calendar = nil; if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) { calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian]; } else { calendar = [NSCalendar currentCalendar]; } NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSLog(@"%zd", [calendar isDateInToday:[fmt dateFromString:@"2015-11-10 01:09:56"]]); }void dateCompare3(){ NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // 时间字符串 NSString *createdAtString = @"2015-11-01 09:10:05"; NSDate *createdAtDate = [fmt dateFromString:createdAtString]; // 其他时间 NSString *otherString = @"2015-10-31 08:56:45"; NSDate *otherDate = [fmt dateFromString:otherString]; // 获得NSCalendar NSCalendar *calendar = nil; if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) { calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian]; } else { calendar = [NSCalendar currentCalendar]; } // 获得日期之间的间隔 NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; NSDateComponents *cmps = [calendar components:unit fromDate:createdAtDate toDate:otherDate options:0]; NSLog(@"%@", cmps);}void dateCompare2(){ // 时间字符串 NSString *createdAtString = @"2015-11-20 09:10:05"; NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSDate *createdAtDate = [fmt dateFromString:createdAtString]; // 手机当前时间 // NSDate *nowDate = [NSDate date]; // 获得createdAtDate和nowDate的时间间隔(间隔多少秒) // NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate]; NSTimeInterval interval = [createdAtDate timeIntervalSinceNow]; NSLog(@"%f", interval);}void dateCompare(){ // 时间字符串 NSString *createdAtString = @"2015-11-20 11:10:05"; NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSDate *createdAtDate = [fmt dateFromString:createdAtString]; // 手机当前时间 NSDate *nowDate = [NSDate date]; /** NSComparisonResult的取值 NSOrderedAscending = -1L, // 升序, 越往右边越大 NSOrderedSame, // 相等 NSOrderedDescending // 降序, 越往右边越小 */ // 获得比较结果(谁大谁小) NSComparisonResult result = [nowDate compare:createdAtDate]; if (result == NSOrderedAscending) { // 升序, 越往右边越大 NSLog(@"createdAtDate > nowDate"); } else if (result == NSOrderedDescending) { // 降序, 越往右边越小 NSLog(@"createdAtDate < nowDate"); } else { NSLog(@"createdAtDate == nowDate"); }}/** * 日期元素 : 年月日时分秒 */void getComponentsOfDate3(){ // 时间字符串 NSString *string = @"2015-11-20 09:10:05"; // 日期格式化类 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; // 设置日期格式(为了转换成功) fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // NSString * -> NSDate * NSDate *date = [fmt dateFromString:string]; // 利用NSCalendar处理日期 NSCalendar *calendar = [NSCalendar currentCalendar]; NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; NSDateComponents *cmps = [calendar components:unit fromDate:date]; // NSLog(@"%zd %zd %zd", cmps.year, cmps.month, cmps.day); NSLog(@"%@", cmps);}/** * 日期元素 : 年月日时分秒 */void getComponentsOfDate2(){ // 时间字符串 NSString *string = @"2015-11-20 09:10:05"; // 日期格式化类 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; // 设置日期格式(为了转换成功) fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // NSString * -> NSDate * NSDate *date = [fmt dateFromString:string]; // 利用NSCalendar处理日期 NSCalendar *calendar = [NSCalendar currentCalendar]; NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:date]; NSInteger hour = [calendar component:NSCalendarUnitHour fromDate:date]; NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:date]; NSLog(@"%zd %zd %zd", month, hour, minute);}/** * 日期元素 : 年月日时分秒 */void getComponentsOfDate(){ // 时间字符串 NSString *string = @"2015-11-20 09:10:05"; NSString *month = [string substringWithRange:NSMakeRange(5, 2)]; NSLog(@"%@", month);}void date2string(){ NSDate *date = [NSDate date]; NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy年MM月dd号 HH:mm:ss"; NSString *string = [fmt stringFromDate:date]; NSLog(@"----%@+++++", string); }void string2date4(){ // 时间戳 : 从1970年1月1号 00:00:00开始走过的毫秒数 // 时间字符串 - 时间戳 NSString *string = @"1745645645645"; NSTimeInterval second = string.longLongValue / 1000.0; // 时间戳 -> NSDate * NSDate *date = [NSDate dateWithTimeIntervalSince1970:second]; NSLog(@"%@", date);}void string2date3(){ // 时间字符串 NSString *string = @"Tue May 31 17:46:55 +0800 2011"; // 日期格式化类 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy"; // fmt.dateFormat = @"EEE MMM dd HH:mm:ss ZZZZ yyyy"; // 设置语言区域(因为这种时间是欧美常用时间) fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; NSLog(@"%@", [fmt dateFromString:string]);}void string2date2(){ // 时间字符串 NSString *string = @"11月-20号/2015年 09-10:05秒"; // 日期格式化类 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"MM月-dd号/yyyy年 HH-mm:ss秒"; NSLog(@"%@", [fmt dateFromString:string]);}void string2date(){ // 时间字符串 NSString *string = @"2015-11-20 09:33:22"; // 日期格式化类 NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; // 设置日期格式(为了转换成功) fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // NSString * -> NSDate * NSDate *date = [fmt dateFromString:string]; NSString *newStr = [fmt stringFromDate:date]; NSLog(@"%@", date); NSLog(@"%@", newStr); }

 总结:

## NSDateFormatter的作用

- NSString \* -> NSDate *

 

```obj

- (nullable NSDate *)dateFromString:(NSString *)string;

```

 

- NSDate \* -> NSString *

 

```objc

- (NSString *)stringFromDate:(NSDate *)date;

```

 

## 常见的日期格式

- http://www.cnblogs.com/mailingfeng/archive/2011/07/28/2120422.html

 

## NSString \* -> NSDate *

- 2015-11-20 09:10:05

 

```objc

// 时间字符串

NSString *string = @"2015-11-20 09:10:05";

 

// 日期格式化类

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

// 设置日期格式(为了转换成功)

fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

 

// NSString * -> NSDate *

NSDate *date = [fmt dateFromString:string];

 

NSLog(@"%@", date);

```

 

- 11月-20号/2015年 09-10:05秒

 

```objc

// 时间字符串

NSString *string = @"11月-20号/2015年 09-10:05秒";

 

// 日期格式化类

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

fmt.dateFormat = @"MM月-dd号/yyyy年 HH-mm:ss秒";

 

NSLog(@"%@", [fmt dateFromString:string]);

```

 

- Tue May 31 17:46:55 +0800 2011

 

```objc

// 时间字符串

NSString *string = @"Tue May 31 17:46:55 +0800 2011";

 

// 日期格式化类

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

fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";

// fmt.dateFormat = @"EEE MMM dd HH:mm:ss ZZZZ yyyy";

// 设置语言区域(因为这种时间是欧美常用时间)

fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

 

NSLog(@"%@", [fmt dateFromString:string]);

```

 

- 1745645645645

 

```objc

// 时间戳 : 从1970年1月1号 00:00:00开始走过的毫秒数

 

// 时间字符串 - 时间戳

NSString *string = @"1745645645645";

NSTimeInterval second = string.longLongValue / 1000.0;

 

// 时间戳 -> NSDate *

NSDate *date = [NSDate dateWithTimeIntervalSince1970:second];

NSLog(@"%@", date);

```

 

## NSCalendar的注意点

```objc

#define iOS(version) ([UIDevice currentDevice].systemVersion.doubleValue >= (version))

 

NSCalendar *calendar = nil;

if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {

    calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];

} else {

    calendar = [NSCalendar currentCalendar];

}

 

NSCalendar *calendar = nil;

if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {

    calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];

} else {

    calendar = [NSCalendar currentCalendar];

}

```

 

## NSDate \* -> NSString *

```objc

NSDate *date = [NSDate date];

 

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

fmt.dateFormat = @"yyyy年MM月dd号 HH:mm:ss";

 

NSString *string = [fmt stringFromDate:date];

```

 

## 获得日期元素

```objc

NSString *string = @"2015-11-20 09:10:05";

 

NSString *month = [string substringWithRange:NSMakeRange(5, 2)];

 

NSLog(@"%@", month);

```

```objc

// 时间字符串

NSString *string = @"2015-11-20 09:10:05";

 

// 日期格式化类

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

// 设置日期格式(为了转换成功)

fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

 

// NSString * -> NSDate *

NSDate *date = [fmt dateFromString:string];

 

// 利用NSCalendar处理日期

NSCalendar *calendar = [NSCalendar currentCalendar];

NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:date];

NSInteger hour = [calendar component:NSCalendarUnitHour fromDate:date];

NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:date];

 

NSLog(@"%zd %zd %zd", month, hour, minute);

```

```objc

// 时间字符串

NSString *string = @"2015-11-20 09:10:05";

 

// 日期格式化类

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

// 设置日期格式(为了转换成功)

fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

 

// NSString * -> NSDate *

NSDate *date = [fmt dateFromString:string];

 

// 利用NSCalendar处理日期

NSCalendar *calendar = [NSCalendar currentCalendar];

 

NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

NSDateComponents *cmps = [calendar components:unit  fromDate:date];

 

//    NSLog(@"%zd %zd %zd", cmps.year, cmps.month, cmps.day);

NSLog(@"%@", cmps);

```

 

## 日期比较

```objc

// 时间字符串

NSString *createdAtString = @"2015-11-20 11:10:05";

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

fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *createdAtDate = [fmt dateFromString:createdAtString];

 

// 手机当前时间

NSDate *nowDate = [NSDate date];

 

/**

 NSComparisonResult的取值

 NSOrderedAscending = -1L, // 升序, 越往右边越大

 NSOrderedSame,  // 相等

 NSOrderedDescending // 降序, 越往右边越小

 */

// 获得比较结果(谁大谁小)

NSComparisonResult result = [nowDate compare:createdAtDate];

if (result == NSOrderedAscending) { // 升序, 越往右边越大

    NSLog(@"createdAtDate > nowDate");

} else if (result == NSOrderedDescending) { // 降序, 越往右边越小

    NSLog(@"createdAtDate < nowDate");

} else {

    NSLog(@"createdAtDate == nowDate");

}

```

```objc

// 时间字符串

NSString *createdAtString = @"2015-11-20 09:10:05";

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

fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *createdAtDate = [fmt dateFromString:createdAtString];

 

// 手机当前时间

//    NSDate *nowDate = [NSDate date];

 

// 获得createdAtDate和nowDate的时间间隔(间隔多少秒)

//    NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate];

NSTimeInterval interval = [createdAtDate timeIntervalSinceNow];

NSLog(@"%f", interval);

```

```objc

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

fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";

 

// 时间字符串

NSString *createdAtString = @"2015-11-01 09:10:05";

NSDate *createdAtDate = [fmt dateFromString:createdAtString];

 

// 其他时间

NSString *otherString = @"2015-10-31 08:56:45";

NSDate *otherDate = [fmt dateFromString:otherString];

 

// 获得NSCalendar

NSCalendar *calendar = nil;

if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {

    calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];

} else {

#import 
//typedef enum {// /** 图片 */// XMGTopicTypePicture = 10,// /** 段子 */// XMGTopicTypeWord = 29,// /** 声音 */// XMGTopicTypeVoice = 31,// /** 视频 */// XMGTopicTypeVideo = 41,//} XMGTopicType;typedef NS_ENUM(NSUInteger, XMGTopicType) { /** 图片 */ XMGTopicTypePicture = 10, /** 段子 */ XMGTopicTypeWord = 29, /** 声音 */ XMGTopicTypeVoice = 31, /** 视频 */ XMGTopicTypeVideo = 41};@class XMGComment;@interface XMGTopic : NSObject/** 用户的名字 */@property (nonatomic, copy) NSString *name;/** 用户的头像 */@property (nonatomic, copy) NSString *profile_image;/** 帖子的文字内容 */@property (nonatomic, copy) NSString *text;/** 帖子审核通过的时间 */@property (nonatomic, copy) NSString *created_at;/** 顶数量 */@property (nonatomic, assign) NSInteger ding;/** 踩数量 */@property (nonatomic, assign) NSInteger cai;/** 转发\分享数量 */@property (nonatomic, assign) NSInteger repost;/** 评论数量 */@property (nonatomic, assign) NSInteger comment;/** 最热评论 */@property (nonatomic, strong) XMGComment *top_cmt;/** 帖子类型 */@property (nonatomic, assign) XMGTopicType type;@end
#import "XMGTopic.h"@implementation XMGTopic#pragma mark - 其他static NSDateFormatter *fmt_;static NSCalendar *calendar_;/** *  在第一次使用XMGTopic类时调用1次 */+ (void)initialize{    fmt_ = [[NSDateFormatter alloc] init];    calendar_ = [NSCalendar calendar];}- (NSString *)created_at{    // 获得发帖日期    fmt_.dateFormat = @"yyyy-MM-dd HH:mm:ss";    NSDate *createdAtDate = [fmt_ dateFromString:_created_at];        if (createdAtDate.isThisYear) { // 今年        if (createdAtDate.isToday) { // 今天            // 手机当前时间            NSDate *nowDate = [NSDate date];            NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;            NSDateComponents *cmps = [calendar_ components:unit fromDate:createdAtDate toDate:nowDate options:0];                        if (cmps.hour >= 1) { // 时间间隔 >= 1小时                return [NSString stringWithFormat:@"%zd小时前", cmps.hour];            } else if (cmps.minute >= 1) { // 1小时 > 时间间隔 >= 1分钟                return [NSString stringWithFormat:@"%zd分钟前", cmps.minute];            } else { // 1分钟 > 分钟                return @"刚刚";            }        } else if (createdAtDate.isYesterday) { // 昨天            fmt_.dateFormat = @"昨天 HH:mm:ss";            return [fmt_ stringFromDate:createdAtDate];        } else { // 其他            fmt_.dateFormat = @"MM-dd HH:mm:ss";            return [fmt_ stringFromDate:createdAtDate];        }    } else { // 非今年        return _created_at;    }}@end

 

    calendar = [NSCalendar currentCalendar];

}

 

// 获得日期之间的间隔

NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;

NSDateComponents *cmps = [calendar components:unit fromDate:createdAtDate toDate:otherDate options:0];

 

NSLog(@"%@", cmps);

```

 例子:

转载于:https://www.cnblogs.com/cqb-learner/p/5771318.html

你可能感兴趣的文章
bzoj1040: [ZJOI2008]骑士
查看>>
LeetCode 74. Search a 2D Matrix(搜索二维矩阵)
查看>>
利用SignalR来同步更新Winfrom
查看>>
反射机制
查看>>
CocoaPod
查看>>
css3实现漂亮的按钮链接
查看>>
[python基础] python 2与python 3的区别,一个关于对象的未知的坑
查看>>
BZOJ 1251: 序列终结者 [splay]
查看>>
云的世界
查看>>
初识DetNet:确定性网络的前世今生
查看>>
5G边缘网络虚拟化的利器:vCPE和SD-WAN
查看>>
MATLAB基础入门笔记
查看>>
【UVA】434-Matty&#39;s Blocks
查看>>
五、宽度优先搜索(BFS)
查看>>
运行一个窗体直接最大化并把窗体右上角的最大化最小化置灰
查看>>
Android开发技术周报 Issue#80
查看>>
hadoop2.2.0+hive-0.10.0完全分布式安装方法
查看>>
WebForm——IIS服务器、开发方式和简单基础
查看>>
小实验3:实现haproxy的增、删、查
查看>>
Angular中ngModel的$render的详解
查看>>