将时间戳转换为时间,并输出“刚刚”、“昨天”、“XX小时前”等
来源:互联网 发布:进驻淘宝多少费用 编辑:程序博客网 时间:2024/05/21 17:27
我们在开发iOS程序中需要有接口,有时候借口提供的时间是NSNumber类型的并且是时间戳。比如说:1447375370 其实这个意思就是1970年0点到当前时间的秒数。看到这里,大概我们心里就有数了。为了方便编程中使用,我们写成NSString的类目(Category),这样可以通过以下方式直接调用即可:
NSString *resultStr = [NSString stringWithTimeStamp:<#此处需要NSNumber类型的时间戳#>];
好了,上代码
NSString+TimeString.h
#import <Foundation/Foundation.h>@interface NSString (TimeString)/**将时间戳转换为时间*/+ (NSString *)stringWithTimeStamp:(NSNumber *)timeStamp;@end
NSString+TimeString.m
#define anHour 3600#define aMinute 60#import "NSString+TimeString.h"@implementation NSString (TimeString)+ (NSString *)stringWithTimeStamp:(NSNumber *)timeStamp { //获取当前时间 NSDate *currentDate = [NSDate date]; //将当前时间转化为时间戳 NSTimeInterval currentDateStamp = [currentDate timeIntervalSince1970] + 8 * anHour; //将传入的参数转化为时间戳 double dateStamp = [timeStamp doubleValue] + 8 * anHour; //计算时间间隔,即当前时间减去传入的时间 double interval = currentDateStamp - dateStamp; //获取当前时间的小时单位(24小时制) NSDateFormatter *formatter = [NSDateFormatter new]; [formatter setDateFormat:@"H"]; int nowHour = [[formatter stringFromDate:currentDate] intValue]; //获取当前时间的分钟单位 NSDateFormatter *minFormatter = [NSDateFormatter new]; [minFormatter setDateFormat:@"m"]; int nowMinute = [[minFormatter stringFromDate:currentDate] intValue]; //今天0点的时间戳 double todayZeroClock = currentDateStamp - anHour * nowHour - aMinute * nowMinute; //时间格式化,为输出做准备 NSDateFormatter *outputFormat = [NSDateFormatter new]; [outputFormat setDateFormat:@"M月d日"]; //进行条件判断,满足不同的条件返回不同的结果 if (interval < 30 * aMinute) { //在30分钟之内 return @"刚刚"; } else if (todayZeroClock - dateStamp > 24 * anHour) { //已经超过两天以上 return [outputFormat stringFromDate:[NSDate dateWithTimeIntervalSince1970:dateStamp]]; } else if (todayZeroClock - dateStamp > 0) { //已经超过一天(昨天) return @"昨天"; } else if (interval < anHour) { //一个小时之内 return [NSString stringWithFormat:@"%.0f分钟前", (currentDateStamp - dateStamp) / aMinute]; } else { //今天之内 return [NSString stringWithFormat:@"%.0f小时前", (currentDateStamp - dateStamp) / anHour]; }}@end
0 1
- 将时间戳转换为时间,并输出“刚刚”、“昨天”、“XX小时前”等
- 用php判断时间戳来输出刚刚,分钟前,小时前昨天和时间
- PHP CodeBase: 将时间显示为“刚刚”“n分钟/小时前”等
- JavaScript 对传入时间戳进行转换(1分钟内显示刚刚,1小时内显示xx分钟前,今日的显示时分,昨天显示昨天+时分,一年内显示月日时分,一年外显示年月日)
- 时间戳转换日期及xx分钟/小时/天前
- php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天10:23”等
- PHP 时间戳转换成 已读文本:刚刚、几小时前、几分钟前、昨天
- java 时间戳 转 昨天前天 几小时前 刚刚
- Java时间工具类DateUtils(把日期时间转换成xx秒前、xx分钟前、xx小时前...)
- Java时间工具类DateUtils(把日期时间转换成xx秒前、xx分钟前、xx小时前...)
- Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)
- 输出类似于 刚刚, 4分钟前, 一小时前, 昨天这样的时间
- 小时转换为时间戳
- php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天
- php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天10:23
- 时间戳转换为X分钟前、X小时前、X天前的时间格式函数
- iOS 时间戳转换为几分钟前等
- 时间转换<将秒转换为天、小时、分钟>
- leetcode--Search a 2D Matrix
- Mac模拟慢速网络 - Network Link Conditioner
- Linux下Tomcat的启动、关闭、杀死进程
- sbt基础
- 获取某年某月的日期
- 将时间戳转换为时间,并输出“刚刚”、“昨天”、“XX小时前”等
- JSP指令与动作元素
- 递归解迷宫
- Linux secure boot(安全启动)时添加Nvidia显卡驱动
- nyoj98
- dubbo + assembly 整理
- myeclipse debug模式启动tomcat巨慢无比解决办法
- c++map和multimap
- 在geronimo上部署daytrader benchmark