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

8
我从Java Date得到了一个序列号,将其转换为长整型,例如“1352101337000”。 我遇到的问题是如何将这个长整数分析回NSDate或NSString,以便我清楚地知道序列号显示的时间。 有人有解决这个问题的方法吗?
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];

2
还要检查是否需要添加以下内容:[NSDate dateWithTimeIntervalSince1970:(ms / 1000)]; - Pach

3

Swift

为了使用 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年以来的毫秒数,因此上述方法可以实现。但是,在将任何旧整数转换为日期之前,请确保此假设成立。如果您正在将时间间隔转换为秒,则不要除以1000。
  • 还有其他方法可以进行转换和显示字符串。请参见这篇更详细的解释

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接