OC_时间戳、时间字符串、

序言:翻阅资料,学习,探究,总结,借鉴,谢谢探路者,我只是个搬运工,不对不妥的地方欢迎指点。
参考、转发资料:

1、时间、时间戳之间的转换,有以下方法

  • 获取现在的时间戳
  • 获取现在的时间
  • 时间戳转换成字符串
  • 字符串转换成时间戳
  • 字符串转换成字符串 (精确时间转换成模糊时间,,例如:yyyy-MM-dd HH:mm:ss -> HH:mm)
  • 时间戳转换成字符串 (多少时间之内的,类似朋友圈的发布时间显示)
  • 获取多少天之前之后的日期时间

SJDateConvertTool.h

typedef enum : NSUInteger {
    DateDisplayType_Default = 0,        //  yyyy-MM-dd HH:mm:ss
    DateDisplayType_Date = 1,           //  yyyy-MM-dd
    DateDisplayType_Time = 2,           //  HH:mm
    DateDisplayType_Custom = 3          //  自定义类型
} DateDisplayType;


typedef enum : NSUInteger {
    PreviousDateDirectionType_Before = 0,       //  之前
    PreviousDateDirectionType_After = 1,        //  之后
} PreviousDateDirectionType;

@interface SJDateConvertTool : NSObject



/**
 获取现在的时间戳
 
 @return 现在的时间戳
 */
+ (long)getThePresentTimeStamp;



/**
 获取现在的时间
 
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 现在的时间
 */
+ (NSString *)getThePresentTimeWithDateDisplayType:(DateDisplayType)dateDisplayType
                                  customTypeString:(NSString *)customTypeString;



/**
 时间戳转换成字符串

 @param timeStamp 时间戳
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 字符串日期
 */
+ (NSString *)dateConvertTimeStampToStringWithTimeStamp:(long)timeStamp
                                        dateDisplayType:(DateDisplayType)dateDisplayType
                                       customTypeString:(NSString *)customTypeString;



/**
 字符串转换成时间戳

 @param timeString 时间字符串
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 时间戳
 */
+ (long)dateConvertStringToTimeStampWithTimeString:(NSString *)timeString
                                   dateDisplayType:(DateDisplayType)dateDisplayType
                                  customTypeString:(NSString *)customTypeString;



/**
 字符串转换成字符串  (精确时间转换成模糊时间,,例如:yyyy-MM-dd HH:mm:ss -> HH:mm)
 
 @param timeString 时间字符串
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 时间戳
 */
+ (NSString *)dateConvertStringToStringWithTimeString:(NSString *)timeString
                                      dateDisplayType:(DateDisplayType)dateDisplayType
                                     customTypeString:(NSString *)customTypeString;



/**
 时间戳转换成字符串  (多少时间之内的,类似朋友圈的发布时间显示)
 
 @param timeStamp 时间戳
 @param hour 设置多少小时以内显示分钟
 @return 时间字符串
 */
+ (NSString *)dateConvertTimeStampToLatelyStringWithTimeStamp:(long)timeStamp
                                                         hour:(NSInteger)hour;



/**
 获取多少天之前之后的日期时间
 
 @param timeString 时间字符串
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @param dayNum 天数
 @param directionType 之前之后方向
 @return 日期时间字符串
 */
+ (NSString *)gainPreviousDateWithBeginTimeString:(NSString *)timeString
                                  dateDisplayType:(DateDisplayType)dateDisplayType
                                 customTypeString:(NSString *)customTypeString
                                           dayNum:(NSInteger)dayNum
                                    directionType:(PreviousDateDirectionType)directionType;

SJDateConvertTool.m

/**
 获取现在的时间戳

 @return 现在的时间戳
 */
+ (long)getThePresentTimeStamp
{
    NSDate *date = [NSDate date];
    long timeStamp = [date timeIntervalSince1970];
    
    return timeStamp;
}
/**
 获取现在的时间

 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 现在的时间
 */
+ (NSString *)getThePresentTimeWithDateDisplayType:(DateDisplayType)dateDisplayType
                                  customTypeString:(NSString *)customTypeString
{
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];
    [dateformatter setDateFormat: [self getDateDisplayTypeWithType:dateDisplayType customTypeString:customTypeString]];
    
    NSDate *date = [NSDate date];
    
    NSString *timeString = [dateformatter stringFromDate:date];
    
    return timeString;
}

/**
 时间戳转换成字符串
 
 @param timeStamp 时间戳
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 字符串日期
 */
+ (NSString *)dateConvertTimeStampToStringWithTimeStamp:(long)timeStamp
                                        dateDisplayType:(DateDisplayType)dateDisplayType
                                       customTypeString:(NSString *)customTypeString
{
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];
    [dateformatter setDateFormat: [self getDateDisplayTypeWithType:dateDisplayType customTypeString:customTypeString]];
    
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeStamp];
    
    NSString *timeString = [dateformatter stringFromDate:date];
    
    return timeString;
}

/**
 字符串转换成时间戳
 
 @param timeString 时间字符串
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 时间戳
 */
+ (long)dateConvertStringToTimeStampWithTimeString:(NSString *)timeString
                                   dateDisplayType:(DateDisplayType)dateDisplayType
                                  customTypeString:(NSString *)customTypeString
{
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];
    [dateformatter setDateFormat: [self getDateDisplayTypeWithType:dateDisplayType customTypeString:customTypeString]];
    
    NSDate *date = [dateformatter dateFromString:timeString];
    
    long timeStamp = [date timeIntervalSince1970];
    
    return timeStamp;
}


/**
 字符串转换成字符串  (精确时间转换成模糊时间,,例如:yyyy-MM-dd HH:mm:ss -> HH:mm)
 
 @param timeString 时间字符串
 @param dateDisplayType 转换类型(期望输入的类型)
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 时间戳
 */
+ (NSString *)dateConvertStringToStringWithTimeString:(NSString *)timeString
                                      dateDisplayType:(DateDisplayType)dateDisplayType
                                     customTypeString:(NSString *)customTypeString
{
    //  时间戳
    long timeStap = [self dateConvertStringToTimeStampWithTimeString:timeString dateDisplayType:dateDisplayType customTypeString:customTypeString];
    
    //  时间字符串
    NSString *newTimeString = [self dateConvertTimeStampToStringWithTimeStamp:timeStap dateDisplayType:dateDisplayType customTypeString:customTypeString];
    
    return newTimeString;
}



/**
 时间戳转换成字符串  (多少时间之内的,类似朋友圈的发布时间显示)

 @param timeStamp 时间戳
 @param hour 设置多少小时以内显示分钟
 @return 时间字符串
 */
+ (NSString *)dateConvertTimeStampToLatelyStringWithTimeStamp:(long)timeStamp
                                                         hour:(NSInteger)hour
{
    //  获取现在的时间戳
    long nowTimeStamp = [self getThePresentTimeStamp];
    long diffTimeStamp = nowTimeStamp - timeStamp;
    
    //  显示的日期
    NSString *dateString = @"";
    
    if(diffTimeStamp >= 24*60*60)
    {
        //  一天前,显示日期
        dateString = [self dateConvertTimeStampToStringWithTimeStamp:timeStamp dateDisplayType:DateDisplayType_Date customTypeString:nil];
    }
    else if(diffTimeStamp >= 60*60*hour)
    {
        //  一天内,但是hour小时外,显示今天的小时
        NSInteger hourString = (NSInteger)(diffTimeStamp/(60*60));
        dateString = [NSString stringWithFormat:@"%ld小时前",(long)hourString];
    }
    else if(diffTimeStamp >= 60*60)
    {
        //  1小时至hour小时之间
        
        //  小时
        NSInteger beforeHour = (NSInteger)(diffTimeStamp/(60*60));
        //  分钟
        NSInteger beforeMinute = (NSInteger)((diffTimeStamp - beforeHour*60*60)/60);
        dateString = [NSString stringWithFormat:@"%ld小时%ld分钟前",(long)beforeHour,(long)beforeMinute];
    }
    else if(diffTimeStamp >= 1*60)
    {
        //  一小时至一分钟之内
        NSInteger beforeMinute = (NSInteger)(diffTimeStamp/60);
        dateString = [NSString stringWithFormat:@"%ld分钟前",(long)beforeMinute];
    }
    else
    {
        //  一分钟之内
        dateString = @"刚刚";
    }
    
    return dateString;
}



/**
 获取多少天之前之后的日期时间

 @param timeString 时间字符串
 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @param dayNum 天数
 @param directionType 之前之后方向
 @return 日期时间字符串
 */
+ (NSString *)gainPreviousDateWithBeginTimeString:(NSString *)timeString
                                  dateDisplayType:(DateDisplayType)dateDisplayType
                                 customTypeString:(NSString *)customTypeString
                                           dayNum:(NSInteger)dayNum
                                    directionType:(PreviousDateDirectionType)directionType
{
    //  获取时间戳
    long timeStamp = [self dateConvertStringToTimeStampWithTimeString:timeString dateDisplayType:dateDisplayType customTypeString:customTypeString];
    
    //  时间差
    long timeDiff = dayNum*24*60*60;
    
    //  新的时间戳
    long newTimeStamp ;
    if(directionType == PreviousDateDirectionType_Before)
    {
        //  之前
        newTimeStamp = timeStamp - timeDiff;
    }
    else
    {
        //  之后
        newTimeStamp = timeStamp + timeDiff;
    }
    
    //  获取时间字符串
    NSString *newTimeString = [self dateConvertTimeStampToStringWithTimeStamp:newTimeStamp dateDisplayType:dateDisplayType customTypeString:customTypeString];
    
    return newTimeString;
        
}



/**
 获取转换类型

 @param dateDisplayType 转换类型
 @param customTypeString 自定义类型,如果不需要的话设置nil
 @return 转换类型
 */
+ (NSString *)getDateDisplayTypeWithType:(DateDisplayType)dateDisplayType
                        customTypeString:(NSString *)customTypeString
{
    NSString *timeTypeString = nil;
    
    switch (dateDisplayType)
    {
        case DateDisplayType_Default:
        {
            timeTypeString = @"yyyy-MM-dd HH:mm:ss";
            break;
        }
        case DateDisplayType_Date:
        {
            timeTypeString = @"yyyy-MM-dd";
            break;
        }
        case DateDisplayType_Time:
        {
            timeTypeString = @"HH:mm";
            break;
        }
        case DateDisplayType_Custom:
        {
            //  自定义类型不正确的话设置默认类型
            timeTypeString = customTypeString ? customTypeString : @"yyyy-MM-dd HH:mm:ss";
            break;
        }
        default:
        {
            //  找不到的话设置默认类型
            timeTypeString = @"yyyy-MM-dd HH:mm:ss";
            break;
        }
    }
    return timeTypeString;
}

类文件git地址:
https://gitee.com/OC_SJOriginalDemoClass/DateConvert.git

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,002评论 6 509
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,777评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,341评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,085评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,110评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,868评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,528评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,422评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,938评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,067评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,199评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,877评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,540评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,079评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,192评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,514评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,190评论 2 357

推荐阅读更多精彩内容

  • 序言:翻阅资料,学习,探究,总结,借鉴,谢谢探路者,我只是个搬运工,不对不妥的地方欢迎指点。参考、转发资料: 一、...
    Init_ZSJ阅读 583评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,674评论 18 139
  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 2,054评论 0 5
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,397评论 7 249
  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 10,328评论 2 22