如何将长整数时间转换为NSString或NSDate来显示时间?

我从Java Date获得了一个序列号,它转换成长整数,如“1352101337000”。 我遇到的问题是如何将这个长整数分析回NSDate或NSString,以便我可以清楚知道序列号显示的时间。

这个案子有人有解决方案吗?

用这个,

NSTimeInterval timeInMiliseconds = [[NSDate date] timeIntervalSince1970]; 

要改变它,

 NSDate* date = [NSDate dateWithTimeIntervalSince1970:timeInMiliseconds]; 

根据苹果文档 ,

NSTimeInterval:用于指定时间间隔(以秒为单位)。

typedef double NSTimeInterval;

它是double型。

要将日期转换为字符串,

 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"]; //Optionally for time zone converstions [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]]; NSString *stringFromDate = [formatter stringFromDate:myNSDateInstance]; [formatter release]; 

迅速

此答案已针对Swift 3进行了更新,因此不再使用NSDate

执行以下步骤将长整数转换为日期字符串。

 // convert to seconds let timeInMilliseconds = 1352101337001 let timeInSeconds = Double(timeInMilliseconds) / 1000 // get the Date let dateTime = Date(timeIntervalSince1970: timeInSeconds) // display the date and time let formatter = DateFormatter() formatter.timeStyle = .medium formatter.dateStyle = .long print(formatter.string(from: dateTime)) // November 5, 2012 at 3:42:17 PM 

笔记

  • 由于Java日期自1970年以来以毫秒为单位存储为long整数,因此可行。 但是,在使用上述方法将任何旧整数转换为日期之前,请确保此假设为真。 如果您要以秒为单位转换时间间隔,那么当然不要除以1000。
  • 还有其他方法可以进行转换并显示字符串。 看到这个更全面的解释 。