0

我正在从一个 XML 文件中读取数据,该文件的 UTC 日期看起来像“2011-05-04T00:00:00”,UTC 纪元看起来像 1352716800。

将 UTC 纪元解析为 NSDate 可能比使用复杂的日期格式更安全。我如何将 UTC 纪元解析为 NSDate?使用 NSDateFormatter 和“UTC Epoch”的特殊格式?

我认为它是[[NSDate alloc] initWithTimeIntervalSince1970:epoch]并且测试似乎有效。但我不确定这是否只是偶然正确,或者“UTC 时代”是否是“自 1970 年以来”。Apple Docs 没有提到 UTC 纪元。

4

3 回答 3

4

是的,你是对的,它是 UTC 纪元。如果“纪元时间是 UTC”作为参考,请查看

NSString *epochTime = @"1352716800";

// (Step 1) Convert epoch time to SECONDS since 1970
NSTimeInterval seconds = [epochTime doubleValue];
NSLog (@"Epoch time %@ equates to %qi seconds since 1970", epochTime, (long long) seconds);

// (Step 2) Create NSDate object
NSDate *epochNSDate = [[NSDate alloc] initWithTimeIntervalSince1970:seconds];
NSLog (@"Epoch time %@ equates to UTC %@", epochTime, epochNSDate);
于 2012-09-04T10:21:59.220 回答
2

您实际上并不需要解析UTC 纪元日期。相反,您可以或多或少地直接NSDate从中创建一个实例:

long utcEpoch = 1352716800;
NSDate* date = [Date dateWithTimeIntervalSince1970: utcEpoch];
于 2012-09-04T10:20:56.190 回答
0

在从 Firebase ( kFirebaseServerValueTimestamp) 检索到的时间戳的情况下,纪元以毫秒为单位表示:

Firebase 服务器自动填充当前时间戳(自 Unix 纪元以来的时间,以毫秒为单位)的占位符值。

initWithTimeIntervalSince1970在这种情况下,如果您在 iOS 中使用,则需要除以 1000 。

于 2016-05-17T11:44:55.383 回答