OC学习:OC自定义方法以字符串的形式返回输入时间与现在时间的差距

本文主要是介绍OC学习:OC自定义方法以字符串的形式返回输入时间与现在时间的差距,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

// 在Tool.m文件中编写方法

//输入字符串格式为yyyy年MM月dd日 HH:mm:ss,返回与现在时间的差距,字符串形式

+(NSString *)handleDateFromString:(NSString *)dateString{
    NSString *string;
    NSInteger data = 0;
    
    //将字符串转换为NSDate
    NSDateFormatter *dateFormatter = [NSDateFormatter new];
    //  1.设置字符串的格式
    [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
    //  2.转换
    NSDate *dateForString = [dateFormatter dateFromString:dateString];
    //  3.求出与现在的时间爱你差,过去 减 现在 为一个负数。
    NSTimeInterval timeTnterval = [dateForString timeIntervalSinceNow];
    //  4.过去的时间大于现在的时间也就是未来。
    if(timeTnterval > 0){
        string = @"你输入的时间是未来时间!error";
    };
    //  5.转换为正数比较,以确定范围
    if (timeTnterval*-1 > 60*60*24*365) {
    //  6.时间超过一年,字符串放回 年月日
        //  6.1 找到字符串中 年、月、日 的范围,找到“日”的位置就找到了年、月、日 的范围。
        NSRange range = [dateString rangeOfString:@"日"];
        //  6.2 NSMakeRange(0, range.location+range.length)为年、月、日 的范围。用substringWithRange方法放回范围内的字符串到string中
        string = [dateString substringWithRange:NSMakeRange(0, range.location+range.length)];
    //  7.时间超过一个月则返回“‘多少个’月之前”,在这里我们不考虑每一个月份的不同最大天数的,都用31天,因为超过了31天就一定是一个月之前了,比起30天和29天要更加的贴切。
    }else if(timeTnterval*-1 > 60*60*24*31){
    //  8.求已经超过多少个月分
        data = (NSInteger)timeTnterval/(60*60*24*31)*-1;
    //  9.设置返回字符串的内容
        string = [NSString stringWithFormat:@" %ld月之前",data];
    //  10.其他雷同
    }else if(timeTnterval*-1 > 60*60*24){
        data = (NSInteger)timeTnterval/(60*60*24)*-1;
        string = [NSString stringWithFormat:@" %ld天之前",data];
    
    }else if(timeTnterval*-1 > 60*60){
        data = (NSInteger)timeTnterval/(60*60)*-1;
        string = [NSString stringWithFormat:@"%ld小时之前",data];
        
    }else if(timeTnterval*-1 > 60){
       data = (NSInteger)timeTnterval/60*-1;
        string = [NSString stringWithFormat:@"%ld分钟之前",data];
        
    }else if(timeTnterval < 60){
        string = @"刚刚";
    }
    
    return string;
}
// 输入一个时间,返回与现在时间的差距,字符串形式
+(NSString *)handleDateFromdate:(NSDate *)date{
    NSString *string;
    NSInteger data = 0;
    NSTimeInterval timeTnterval = [date timeIntervalSinceNow];
    if(timeTnterval > 0){
        string = @"error";
    };
    if (timeTnterval*-1 > 60*60*24*365) {
        NSDateFormatter *dateFormatter = [NSDateFormatter new];
        [dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
        NSString *dateString = [dateFormatter stringFromDate:date];
        NSRange range = [dateString rangeOfString:@"日"];
        string = [dateString substringWithRange:NSMakeRange(0, range.location+range.length)];
    }else if(timeTnterval*-1 > 60*60*24*30){
        data = (NSInteger)timeTnterval/(60*60*24*30)*-1;
        string = [NSString stringWithFormat:@" %ld月之前",data];
        
    }else if(timeTnterval*-1 > 60*60*24){
        data = (NSInteger)timeTnterval/(60*60*24)*-1;
        string = [NSString stringWithFormat:@" %ld天之前",data];
        
    }else if(timeTnterval*-1 > 60*60){
        data = (NSInteger)timeTnterval/(60*60)*-1;
        string = [NSString stringWithFormat:@"%ld小时之前",data];
        
    }else if(timeTnterval*-1 > 60){
        data = (NSInteger)timeTnterval/60*-1;
        string = [NSString stringWithFormat:@"%ld分钟之前",data];
        
    }else if(timeTnterval < 60){
        string = @"刚刚";
    }
    return string;
}

这篇关于OC学习:OC自定义方法以字符串的形式返回输入时间与现在时间的差距的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/799770

相关文章

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法

《Linux查看系统盘和SSD盘的容量、型号及挂载信息的方法》在Linux系统中,管理磁盘设备和分区是日常运维工作的重要部分,而lsblk命令是一个强大的工具,它用于列出系统中的块设备(blockde... 目录1. 查看所有磁盘的物理信息方法 1:使用 lsblk(推荐)方法 2:使用 fdisk -l(

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

MySQL查看表的最后一个ID的常见方法

《MySQL查看表的最后一个ID的常见方法》在使用MySQL数据库时,我们经常会遇到需要查看表中最后一个id值的场景,无论是为了调试、数据分析还是其他用途,了解如何快速获取最后一个id都是非常实用的技... 目录背景介绍方法一:使用MAX()函数示例代码解释适用场景方法二:按id降序排序并取第一条示例代码解

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

Java 中的跨域问题解决方法

《Java中的跨域问题解决方法》跨域问题本质上是浏览器的一种安全机制,与Java本身无关,但Java后端开发者需要理解其来源以便正确解决,下面给大家介绍Java中的跨域问题解决方法,感兴趣的朋友一起... 目录1、Java 中跨域问题的来源1.1. 浏览器同源策略(Same-Origin Policy)1.