文档章节

【整理】OC中常用的关于时间格式的转换

冰泪_
 冰泪_
发布于 2016/05/20 10:05
字数 1676
阅读 798
收藏 0
点赞 3
评论 0

代码可能有点乱 不过应该不影响使用  这些应该基本上能满足大部分用户对于时间的处理需求

DateTimeHelper.h文件

#import <Foundation/Foundation.h>

@interface DateTimeHelper : NSObject

//时间戳转化成字符串格式日期 YYYY-MM-dd HH:mm
+(NSString*)dateTimeFromTimesp:(double)timeStamp;

//时间戳转化成字符串格式日期 YYYY-MM-dd HH:mm:ss
+(NSString*)dateTimeFromTimesp1:(double)timeStamp;

//时间戳转化成字符串格式日期 YYYY-MM-dd
+(NSString*)dateTimeFromTimespEx:(double)timeStamp;

//时间戳转化成字符串格式日期 YYYY年MM月dd日 ss时mm分
+(NSString*)dateTimeFromTimespNYR:(double)timeStamp;

//将时间戳转化成double
+(double)dateToTimesp:(NSDate*)aDate;

//获取当前日期是 几号
+(NSString*)currentDay;

//相对时间 N年N月N日后的日期     -数可以表示n年前的日期
+ (NSString *)relativeTime:(NSString *)dateStr years:(NSInteger)years month:(NSInteger)month day:(NSInteger)day;

//将秒处理成格式化的时间
+ (NSString *)getDateFormatWithStringSeconds:(NSString *)timerStr;

//获取当前系统时间格式化 参数为一个格式YYYY-MM-dd HH:mm:ss;  返回的格式和这个保持一致
+(NSString*)getCurrentSystemTime:(NSString*)formart;

//获取当前网络时间时间(中国)并转换成年月日分开 返回只根据需要自己修改
+(NSString*)getTimeSegment;

//将时间格式格式化成字符串《=》nsdate 转换成需要的string
+(NSString *)getStringFromDate:(NSDate*)inputDate format:(NSString *)format;

+ (NSTimeInterval)getDateWithReferenceRetureIntervalFrom1970:(NSString *)reference format:(NSString *)format;

//传入一个格式化过得字符串 返回与当前时间的间隔( 秒)  reference 为  时间字符串 参数为一个reference字符串的 格式根据需要自己填写(YYYY-MM-dd HH:mm:ss);
+ (NSTimeInterval)getDateWithReferenceRetureIntervalToNow:(NSString *)reference format:(NSString *)format;


//返回一个 NSTimeInterval 秒计算    刚刚   1分钟前 还是一周前..
+(NSString *)getTimeString:(NSTimeInterval)time;

@end

 

 

 

DateTimeHelper.m文件

#import "DateTimeHelper.h"

#define vision [[[UIDevice currentDevice]systemVersion] integerValue]<8.0

@implementation DateTimeHelper

//时间戳转化成字符串格式日期
+(NSString*)dateTimeFromTimesp:(double)timeStamp
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
    NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
    return confromTimespStr;
}
+(NSString*)dateTimeFromTimesp1:(double)timeStamp
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
    NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
    return confromTimespStr;
}
//时间戳转化成字符串格式日期 YYYY-MM-dd
+(NSString*)dateTimeFromTimespEx:(double)timeStamp
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy-MM-dd"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
    NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
    return confromTimespStr;
}

//时间戳转化成字符串格式日期 YYYY年MM月dd日 ss时mm分
+(NSString*)dateTimeFromTimespNYR:(double)timeStamp
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy年MM月dd 23时59分"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:timeStamp];
    NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
    return confromTimespStr;
}

+(double)dateToTimesp:(NSDate*)aDate
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    return [aDate timeIntervalSince1970];
//    时间转时间戳的方法:
//    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[aDate timeIntervalSince1970]];
}

//获取当前日期是 几号
+(NSString*)currentDay
{
    //获取当前时间
    NSDate *now = [NSDate date];
  //  NSLog(@"now date is: %@", now);
    
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *dateComponent = [calendar components:unitFlags fromDate:now];
    int day = (int)[dateComponent day];
    return [NSString stringWithFormat:@"%d", day];
//    int year = [dateComponent year];
//    int month = [dateComponent month];
//    int hour = [dateComponent hour];
//    int minute = [dateComponent minute];
//    int second = [dateComponent second];
}
//相对时间 N年N月N日后的日期     -数可以表示n年前的日期
+ (NSString *)relativeTime:(NSString *)dateStr years:(NSInteger)years month:(NSInteger)month day:(NSInteger)day{
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date1 = [dateFormatter dateFromString:dateStr];
    NSLog(@"%@", date1);
    
    NSDateComponents * components = [[NSDateComponents alloc] init];
    components.year = years;
    components.month = month;
    components.day = day;
    NSCalendar * calendar = [NSCalendar currentCalendar];
    
    //NSDate * currentDate = [NSDate date];
    NSDate * nextData = [calendar dateByAddingComponents:components toDate:date1 options:NSCalendarMatchStrictly];
    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
    
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString * str = [formatter stringFromDate:nextData];
    NSLog(@"%@",str);
    return str;
}

//将字符串秒处理成格式化的时间
+ (NSString *)getDateFormatWithStringSeconds:(NSString *)timerStr {
    //转化为Double
    double t = [timerStr doubleValue];
    //计算出距离1970的NSDatereference
    NSDate *date = [NSDate dateWithTimeIntervalSince1970:t];
    //转化为 时间格式化字符串
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    //转化为 时间字符串
    return [df stringFromDate:date];
}

//获取当前系统时间格式化过得
+(NSString*)getCurrentSystemTime:(NSString *)formart{
    
        NSDate * senddate=[NSDate date];
        NSDateFormatter *dateformatter=[[NSDateFormatter alloc] init];
    if(formart.length==0||formart==nil){
        [dateformatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    }else{
        [dateformatter setDateFormat:formart];
    }
    NSString * locationString=[dateformatter stringFromDate:senddate];
    //  NSLog(@"locationString:%@",locationString);
    return locationString;
}

//获取当前时间并转换成年月日分开
+(NSArray*)getTimeSegment{

        NSCalendar *calendar=nil;
        NSInteger unitFlags=0;
//        if(vision){
//            calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//    
//            NSInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit |
//    
//            NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
//        }else{
            calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    
            unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday |
            NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
        //}
        NSDate *now=[NSDate date];
        NSDateComponents *comps = [[NSDateComponents alloc] init];
        comps = [calendar components:unitFlags fromDate:now];
        NSInteger year=[comps year];
        NSInteger month = [comps month];
        NSInteger day = [comps day];
        NSInteger hour = [comps hour];
        NSInteger min = [comps minute];
        NSInteger sec = [comps second];
        //返回的 数组
        NSArray *ary=@[@(year),@(month),@(day),@(hour),@(min),@(sec)];
       // NSLog(@"--%ld-%ld-%ld %ld:%ld:%ld",year,month,day,hour,min,sec);
        // return [NSString stringWithFormat:@"%ld-%ld-%ld %ld:%ld:%ld",year,month,day,hour,min,sec];
    return ary;
}
 //将时间格式格式化成字符串
+(NSString *)getStringFromDate:(NSDate*)inputDate format:(NSString *)format{
        NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
       // [outputFormatter setLocale:[NSLocale currentLocale]];
        [outputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
        if(format.length==0||format==nil){
            [outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        }else{
            [outputFormatter setDateFormat:format];
        }
        [outputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
        NSString *str = [outputFormatter stringFromDate:inputDate];
        //NSLog(@"testDate:%@", str);
      return str;
}

////传入一个格式化过得字符串 返回  一个时间字符串与1970年的( 秒)
+ (NSTimeInterval)getDateWithReferenceRetureIntervalFrom1970:(NSString *)reference format:(NSString *)format{
    //将字符串转换成时间格式 一下获取的全部是北京时间
    NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
    [inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
    if(format.length==0||format==nil){
        [inputFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    }else{
        [inputFormatter setDateFormat:format];
    }
    //[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.0"];
    NSDate* inputDate = [inputFormatter dateFromString:reference];
    // NSLog(@"date = %@",inputDate);
    
    //获取两个时间之间的间隔
    //NSDate *now=[NSDate date];
    NSTimeInterval secondsBetweenDates=[inputDate timeIntervalSince1970];
    //[now timeIntervalSinceDate:inputDate];
     //NSLog(@"秒=  %lf",secondsBetweenDates);
    return secondsBetweenDates;
}

//传入一个格式化过得字符串 返回   一个时间字符串与当前时间的间隔( 秒)
+ (NSTimeInterval)getDateWithReferenceRetureIntervalToNow:(NSString *)reference format:(NSString *)format{
    //将字符串转换成时间格式 一下获取的全部是北京时间
    /*
     传入的时间字符串 20150208010203  则[inputFormatter setDateFormat:@"yyyyMMddHHmmss"];
     传入的时间字符串 2015-02-08 01:02:03  则[inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     */
    NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init];
    [inputFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]];
    if(format.length==0||format==nil){
        [inputFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    }else{
        [inputFormatter setDateFormat:format];
    }
  //  [inputFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.0"];
    NSDate* inputDate = [inputFormatter dateFromString:reference];
    // NSLog(@"date = %@",inputDate);
    
    //获取两个时间之间的间隔
    NSDate *now=[NSDate date];
    NSTimeInterval secondsBetweenDates= [now timeIntervalSinceDate:inputDate];
   // NSLog(@"secondsBetweenDates=  %lf",secondsBetweenDates);
    return secondsBetweenDates;
}
//返回一个字符串 刚刚   1分钟前 ...
+(NSString *)getTimeString:(NSTimeInterval)segmentTime{
    NSInteger allTime=segmentTime;
    
    NSInteger year=60*60*24*365;
    NSInteger month = 60*60*24*30;
    NSInteger day = 60*60*24;
    NSInteger hour = 60*60;
    NSInteger min = 60;
    NSString *str=nil;
    if (allTime<min) {
        str=[NSString stringWithFormat:@"刚刚"];
       
    }else if (allTime<hour){
        str=[NSString stringWithFormat:@"%ld分之前",allTime/min];

    }else if (allTime<day){
        str=[NSString stringWithFormat:@"%ld小时之前",allTime/hour];
        
    }else if (allTime<month){
        str=[NSString stringWithFormat:@"%ld天之前",allTime/day];
        
    }else if (allTime<year){
        str=[NSString stringWithFormat:@"%ld月之前",allTime/month];
        
    }else{
         str=[NSString stringWithFormat:@"%ld年之前",allTime/year];
    }
    //NSLog(@"%@",str);
    return str;
}

 

@end

© 著作权归作者所有

共有 人打赏支持
冰泪_
粉丝 13
博文 68
码字总数 50702
作品 0
青浦
程序员
iOS-Foundation框架中常用的类

Foundation框架中最常用的类。 Foundation框架中最我们经常用的类大致有NSString、NSArray、NSDictionary等等,虽然不需要将每一个类中提供了什么方法都记下来,但是需要做到心中有数,知道F...

xx_cc ⋅ 2016/10/25 ⋅ 0

Android开发中常用的工具类整理

昨天看到一个好的整理帖子,是关于Android开发中常用的工具类整理,整理得很好,其中包括日志、Toast、网络、像素单位转换、屏幕、App相关、键盘、文件上传下载、加密、时间等工具类,特意分...

谁带我去看看世界 ⋅ 2015/05/14 ⋅ 0

如何创建、启动OC4J服务器

Java中常用的Web服务器有很多,今天我在这里记录一下如何创建、启动、部署OC4J服务器。当然创建、启动、部署服务器的方式有很多种,我只介绍一下我用的这种。具体步骤如下: 1 下载OC4J的服务...

乌英达姆 ⋅ 2016/07/02 ⋅ 0

Mysql和SQL Server中的格式转换函数

前言 小编最近在项目中学习大佬们的代码,看到sql查询语句跟我见过的有些不一样,我就知道学习的机会又来了。 正文 Sql Server中的格式转换功能 Sql语句中常用的类型转换函数主要有两种,Cas...

zt15732625878 ⋅ 03/27 ⋅ 0

java时间转换问题

解析XML后发现有些时间格式不是JDK中常用的 durnation = 4d03:59:59 time = 2012-03-06T13:54:15.000 请问下是否有工具类可以解析这类数据的工具?...

老王买房 ⋅ 2012/06/12 ⋅ 2

怎样方便的将pdf转换成ppt

  pdf格式文件和ppt格式文件都是日常工作中常用的,根据不同的需求使用不同格式的文件。很多时候文件是可以通用的,但是格式不同,重新制作一份 的话浪费时间。就比如说现在有pdf格式文件,...

ABBYY ⋅ 2016/07/01 ⋅ 0

常用python日期、日志、获取内容循环的代码片段

近段时间对shell脚本和python进行了梳理,将一些脚本中常用的内容,考虑多种方法整理出来,形成有用的代码片段,这样就可以在需要的时候直接使用,也可以用于备忘和思考。 本次整理的代码片段...

yumushui991 ⋅ 2017/03/02 ⋅ 0

Caffe-Python接口常用API参考

官网也有提供demo http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/net_surgery.ipynb 本文整理了pycaffe中常用的API Packages导入 123 import caffefrom caffe impor......

langb2014 ⋅ 2016/11/08 ⋅ 0

木枝的工具集--啥都有额

此文档用于记录工作中常用的工具,便于自己和大家收藏使用,希望大家喜欢。不定时更新额! 音视频工具 视频下载 Video-Get https://video-get.com/ 小视频下载 http://www.downfi.com/video/...

木枝的纸飞机 ⋅ 2017/11/23 ⋅ 0

QString和QDateTime之间的相互转换

QDateTime是Qt中常用的日期时间类,我们经常会将其转换为QString类型,或者进行相反转换,具体方法如下。 1、QDateTime 转换为 QString QString QDateTime::toString ( Qt::DateFormat forma...

乔三爷 ⋅ 2016/02/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

金山WPS发布了Linux WPS Office

导读 近日,金山WPS发布了Linux WPS Office中文社区版新版本,支持大部分主流Linux系统,功能更加完善,兼容性、稳定性大幅度提升。本次更新WPS将首次在Linux提供专业办公文件云存储服务,实...

问题终结者 ⋅ 昨天 ⋅ 0

springboot2输出metrics到influxdb

序 本文主要研究一下如何将springboot2的metrics输出到influxdb maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

go4it ⋅ 昨天 ⋅ 0

微信小程序 - 选择图片显示操作菜单

之前我分享过选择图片这个文章,但是我在实际开发测试使用中发现一个问题在使用 wx.chooseImage 选择照片显示出第一格是拍照,后面是相册里的图片。这种实现之前说过了,效果如下。 但是你从...

hello_hp ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部