时间戳与时间互转函数
swift版
//MARK: -时间戳转时间函数
func timeStampToString(timeStamp: Double, outputFormatter: String)->String {
//时间戳为毫秒级要/1000 (13位数), 秒就不用除1000(10位数),参数带没带000
let timeString = String.init(format: "%d", timeStamp)
let timeSta:TimeInterval
if timeString.count == 10 {
timeSta = TimeInterval(timeStamp)
}else{
timeSta = TimeInterval(timeStamp / 1000)
}
let date = NSDate(timeIntervalSince1970: timeSta)
let dfmatter = DateFormatter()
//设定时间格式,这里可以设置成自己需要的格式yyyy-MM-dd HH:mm:ss
dfmatter.dateFormat = outputFormatter
return dfmatter.string(from: date as Date)
}
//MARK: -时间转时间戳函数
func timeToTimeStamp(time: String ,inputFormatter:String) -> Double {
let dfmatter = DateFormatter()
//设定时间格式,这里可以设置成自己需要的格式
dfmatter.dateFormat = inputFormatter
let last = dfmatter.date(from: time)
let timeStamp = last?.timeIntervalSince1970
return timeStamp!
}
OC 版
/**
时间戳转时间
@param timeStamp 时间戳
@return 时间字符串
*/
+ (NSString *)timeStampTransToTime:(NSString *)timeStamp outputFormatter:(NSString *)outputFormatter
{
NSTimeInterval time;
if (timeStamp.length == 10) {//如果后台返回10位不除以1000,返回13位需要除以1000
time=[timeStamp doubleValue];
}else{
time=[timeStamp doubleValue]/1000;
}
NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];//设置本地时区
//设定时间格式,这里可以设置成自己需要的格式
[dateFormatter setDateFormat:outputFormatter];
NSString *currentDateStr = [dateFormatter stringFromDate: detaildate];
return currentDateStr;
}
/**
时间转时间戳
@param time 时间
@return 时间戳
*/
+(NSString *)timeTransTotimeStamp:(NSString *)time inputFormatter:(NSString *)inputFormatter
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; //设置本地时区
[dateFormatter setDateFormat:inputFormatter];
NSDate *date = [dateFormatter dateFromString:time];
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[date timeIntervalSince1970]];//时间戳
return timeSp;
}
根据时间戳转化为刚刚,几分钟前
//OC
+(NSString *)handleDate:(NSString *)time_shijianchou{
NSMutableString *str;
NSDate *date=[NSDate date];
NSTimeInterval st=date.timeIntervalSince1970;
// NSDate *newDate=[NSDate dateWithTimeIntervalSince1970:st];
NSTimeInterval result=st-[time_shijianchou doubleValue];
if (result<60) {
str=[NSMutableString stringWithFormat:@"刚刚"];
}
else if (result>=60&&result<3600) {
str=[NSMutableString stringWithFormat:@"%d分钟前",(int)result/60];
}
else if (result>=3600&&result<60*60*24) {
str=[NSMutableString stringWithFormat:@"%d小时前",(int)result/(60*60)];
}
else if (result>=60*60*24&&result<60*60*24*30) {
str=[NSMutableString stringWithFormat:@"%d天前",(int)result/(60*60*24)];
}
else if(result>=60*60*24*30&&result<60*60*24*30*12){
str=[NSMutableString stringWithFormat:@"%d个月",(int)result/(60*60*24*30)];
}else{
NSDate *resultDate=[NSDate dateWithTimeIntervalSince1970:st];
NSDateFormatter *df=[NSDateFormatter new];
[df setDateFormat:@"YYY年"];
str=[NSMutableString stringWithFormat:@"%@",[df stringFromDate:resultDate]];
}
return str;
}
// swift
//MARK: -根据后台时间戳返回几分钟前,几小时前,几天前
func updateTimeToCurrennTime(timeStamp: Double) -> String {
//获取当前的时间戳
let currentTime = Date().timeIntervalSince1970
//时间戳为毫秒级要 / 1000, 秒就不用除1000,参数带没带000
let timeSta:TimeInterval = TimeInterval(timeStamp / 1000)
//时间差
let reduceTime : TimeInterval = currentTime - timeSta
//时间差小于60秒
if reduceTime < 60 {
return "刚刚"
}
//时间差大于一分钟小于60分钟内
let mins = Int(reduceTime / 60)
if mins < 60 {
return "\(mins)分钟前"
}
let hours = Int(reduceTime / 3600)
if hours < 24 {
return "\(hours)小时前"
}
let days = Int(reduceTime / 3600 / 24)
if days < 30 {
return "\(days)天前"
}
//不满足上述条件---或者是未来日期-----直接返回日期
let date = NSDate(timeIntervalSince1970: timeSta)
let dfmatter = DateFormatter()
//yyyy-MM-dd HH:mm:ss
dfmatter.dateFormat="yyyy年MM月dd日 HH:mm:ss"
return dfmatter.string(from: date as Date)
}