关于时间戳和日期的相互转换在以往的项目中也用到了好多,现在总结以下几种常见的转化情况:
一、获取当前时间的时间戳
NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];NSTimeInterval a=[dat timeIntervalSince1970]; //把当前时间转化为时间戳
NSString *timeString = [NSString stringWithFormat:@"%.0f", a];//把当前时间转为字符串
NSLog(@"timeString:%@",timeString);
二、时间戳转化为字符串
+(NSString *)dateChangeWithLong:(long long)date format:(NSString *)format
{
NSDate *d = [NSDate dateWithTimeIntervalSince1970:date/1000];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = format;
return [dateFormatter stringFromDate:d];
}
ps: format控制格式 ,例如format = @"YY/MM/dd hh:mm:ss SS";
时间戳为long long型,时间戳除以1000代表精确到秒,不除以1000精确到微秒
三、根据long long类型时间戳转换为日期格式
//根据时间戳获取星期几
+ (NSString *)getWeekDayFordate:(long long)data
{
NSArray *weekday = [NSArray arrayWithObjects: [NSNull null], @"周日", @"周一", @"周二", @"周三", @"周四", @"周五", @"周六", nil];
NSDate *newDate = [NSDate dateWithTimeIntervalSince1970:data/1000.0];//此处不除以1000是精确到微妙和毫秒
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSWeekdayCalendarUnit fromDate:newDate];
NSString *weekStr = [weekday objectAtIndex:components.weekday];
return weekStr;
}
四、根据long long类型时间戳转换为年月日
+ (NSString *)getDateAccordingTime:(long long )aTime formatStyle:(NSString *)formate{
NSDate *nowDate = [NSDate dateWithTimeIntervalSince1970:aTime/1000.0];
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:formate];
return[formatter stringFromDate:nowDate];
}
PS: format格式对应的意义
YYYY(年)/MM(月)/dd(日) hh(时):mm(分):ss(秒) SS(毫秒)
需要用哪个的话就把哪个格式加上去。
值得注意的是,如果想显示两位数的年份的话,可以用”YY/MM/dd hh:mm:ss SS”,两个Y代表两位数的年份。
而且大写的M和小写的m代表的意思也不一样。“M”代表月份,“m”代码分钟
“HH”代表24小时制,“hh”代表12小时制