我得到了一个 Java 日期的序列号,它转换为长整数,例如“1352101337000”。我遇到的问题是如何将这个长整数分析回 NSDate 或 NSString 以便我可以清楚地知道序列号显示的时间。
有人对此案有解决方案吗?
我得到了一个 Java 日期的序列号,它转换为长整数,例如“1352101337000”。我遇到的问题是如何将这个长整数分析回 NSDate 或 NSString 以便我可以清楚地知道序列号显示的时间。
有人对此案有解决方案吗?
用这个,
NSTimeInterval timeInMiliseconds = [[NSDate date] timeIntervalSince1970];
要改回来,
NSDate* date = [NSDate dateWithTimeIntervalSince1970:timeInMiliseconds];
根据苹果文档,
NSTimeInterval:用于指定时间间隔,以秒为单位。
typedef double NSTimeInterval;
它是双重类型。
要将日期转换为字符串,
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
long
以毫秒为单位存储为整数,因此这是可行的。但是,在使用上述方法将任何旧整数转换为日期之前,请确保此假设成立。如果您以秒为单位转换时间间隔,那么当然不要除以 1000。