把字符串转成NSDate时间格式 并显示时间戳

来源:互联网 发布:linux系统注销超级用户 编辑:程序博客网 时间:2024/06/05 08:34

获取时间的方法:获取时间


我们还是先详细说明一下 日期格式 吧

    • y 将年份 (0-9) 显示为不带前导零的数字
    • yy 以带前导零的两位数字格式显示年份
    • yyy 以四位数字格式显示年份
    • yyyy 以四位数字格式显示年份
    • M 将月份显示为不带前导零的数字(如一月表示为 1)
    • MM 将月份显示为带前导零的数字(例如 01/12/01)
    • MMM 将月份显示为缩写形式(例如 Jan)
    • MMMM 将月份显示为完整月份名(例如 January)
      • 一月 Jan January
      • 二月 Feb February
      • 三月 Mar March
      • 四月 Apr April
      • 五月 May May
      • 六月 Jun June
      • 七月 Jul July
      • 八月 Aug August
      • 九月 Sep September
      • 十月 Oct October
      • 十一月 Nov November
      • 十二月 Dec December
    • d 将日显示为不带前导零的数字(如 1)
    • dd 将日显示为带前导零的数字(如 01)
  • 星期
    • EEE 将日显示为缩写形式(例如 Sun)
    • EEEE 将日显示为全名(例如 Sunday)
      • 星期一 Mon Monday
      • 星期二 Tue Tuesday
      • 星期三 Wed Wednesday
      • 星期四 Thu Thursday
      • 星期五 Fri Friday
      • 星期六 Sat Saturday
      • 星期天 Sun Sunday
  • 小时
    • h 使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)
    • hh 使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)
    • H 使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)
    • HH 使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)
  • 分钟
    • m 将分钟显示为不带前导零的数字(例如 12:1:15)
    • mm 将分钟显示为带前导零的数字(例如 12:01:15)
    • s 将秒显示为不带前导零的数字(例如 12:15:5)
    • ss 将秒显示为带前导零的数字(例如 12:15:05)
    • f 显示秒的小数部分
    • ff 将精确显示到百分之一秒
    • ffff 将精确显示到万分之一秒
    • 用户定义格式中最多可使用七个 f 符号
  • 上午&下午
    • t 使用 12 小时制
      • 中午之前任一小时显示大写的 A
      • 中午到 11:59 PM 之间的任一小时显示大写的 P
    • tt 对于使用 12 小时制的区域设置
      • 中午之前任一小时显示大写的 AM
      • 中午到 11:59 PM 之间的任一小时显示大写的 PM
    • 对于使用 24 小时制的区域设置,不显示任何字符
  • 时区
    • z 显示不带前导零的时区偏移量
    • zz 显示带前导零的时区偏移量(例如 -08)
    • zzz 显示完整的时区偏移量(例如 -0800)
  • 纪元
    • gg 显示时代/纪元字符串(例如 A.D.)
我们请求的时间会和现在的时间去进行比较,显示1分钟前,1小时前,2016年12月08日等等,但是如果我们得到是字符串,怎么去和时间比较呢?

首先我们得到的时间属性createdTime后在.m文件里实现get方法。

-(NSString *)createdTime{

  NSDateFormatter *formatter = [NSDateFormatter new];//    Fri        Aug    28   16:34:36  +0800    2009//    EEE(星期) MM(月) dd(日) HH:mm:ss Z(时区) yyyy(年)    formatter.dateFormat = @"EEE MM dd HH:mm:ss Z yyyy";  //设置时区    formatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US"];    NSDate *weiboDate = [formatter dateFromString:_created_at];

formatter.dateFormat,是什么格式,那要看你的字符串是怎么排序的,自己调动年月日格式即可

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

weiboDate,就是通过字符串得到的formatter格式的时间戳,我们就可以拿它去和现在的时间去进行比较了;

//下面的就是区分这个时间距离现在的时间点


 //得到距1970年秒数    long weiboTime = [weiboDate timeIntervalSince1970];//    得到当前时间距1970年秒数    long nowTime = [[NSDate new] timeIntervalSince1970];    long time = nowTime - weiboTime;    //判断是否在1分钟内    if (time<=60) {        return @"刚刚";    }else if (time>60&&time<=3600) {        return [NSString stringWithFormat:@"%ld分钟前",time/60];    }else if (time>3600&&time<=3600*24) {//判断一天内        return [NSString stringWithFormat:@"%ld小时前",time/3600];    }else{        //        显示具体日期        formatter.dateFormat = @"MM-dd";        return [formatter stringFromDate:weiboDate];    }
}

以上代码块,都写在get方法内,如果可以直接获得NSDate时间戳,就不用通过NSString转换了。

1 0