8

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

有人对此案有解决方案吗?

4

2 回答 2

8

用这个,

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];
于 2012-11-05T08:15:47.817 回答
3

迅速

此答案已针对 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

笔记

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