如何将长整数时间转换为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。 - 还有其他方法可以进行转换并显示字符串。 看到这个更全面的解释 。