最近工作中遇到了涉及时间差的计算,一般拿到的都是一个long型的毫秒值,那么再拿到当前的时间,转换成long型,然后,进行相减,然后把这个毫秒为单位的值转成 秒,分,小时,天,就是这么个流程,其实还是蛮简单的,但是,因为陷入了NSDate的误区,导致我,一直没转过来弯。
贴代码,希望,大家遇到这样的问题,直接copy就ok。
- (NSString *)intervalSinceNow: (NSString *) theDate
{
NSDateFormatter *formatter = [[NSDateFormatteralloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];// ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
NSTimeZone* timeZone = [NSTimeZonetimeZoneWithName:@"Asia/Beijing"];
[formatter setTimeZone:timeZone];
NSDate *datenow = [NSDatedate];
long dd = (long)[datenowtimeIntervalSince1970] - [theDate longLongValue]/1000;
NSString *timeString=@"";
if (dd/3600<1)
{
timeString = [NSStringstringWithFormat:@"%d", dd/60];
timeString=[NSStringstringWithFormat:@"%@分钟前", timeString];
}
if (dd/3600>1&&dd/86400<1)
{
timeString = [NSStringstringWithFormat:@"%d", dd/3600];
timeString=[NSStringstringWithFormat:@"%@小时前", timeString];
}
if (dd/86400>1)
{
timeString = [NSStringstringWithFormat:@"%d", dd/86400];
timeString=[NSStringstringWithFormat:@"%@天前", timeString];
}
NSLog(@"=====%@",timeString);
return timeString;
}