使用 timeIntervalSince1970 转换时,如何使 fileCreationDate 精确到小数点后 6 位?

Posted

技术标签:

【中文标题】使用 timeIntervalSince1970 转换时,如何使 fileCreationDate 精确到小数点后 6 位?【英文标题】:How can I get the fileCreationDate to an accuracy of 6 decimal places when converted using timeIntervalSince1970? 【发布时间】:2013-07-05 11:24:12 【问题描述】:

当转换为NSTimeInverval 时,如何将存储在NSDocumentsDirectory 中的文件的fileCreationDate 精确到小数点后6 位?

一些代码:

//Not accurate enough:
NSDictionary* fileAttribs = [[NSFileManager defaultManager] attributesOfItemAtPath:myPhotoPath error:nil]; 
NSDate *creationDateOfPhoto = [fileAttribs fileCreationDate];
NSTimeInterval creationDateAsTimeInterval = [creationDateOfPhoto timeIntervalSince1970];
NSLog(@"Creation Date of Photo As Time Interval Since 1970: %f", creationDateAsTimeInterval);

//With the desired accuracy:
NSDate* now = [NSDate date];
NSTimeInterval nowStampAsTimeInterval = [now timeIntervalSince1970];
NSLog(@"Now As Time Interval Since 1970: %f", nowStampAsTimeInterval);

此代码的示例输出是:

Creation Date of Photo As Time Interval Since 1970: 1373022866.000000
Now As Time Interval Since 1970:                    1373022884.294028

这可能还是 NSDocuments 中存储的限制?

【问题讨论】:

【参考方案1】:

这是操作系统级别的限制。 HFS+,ios 使用的文件系统,日期分辨率为一秒 - 这就是为什么所有文件时间戳都是整秒的原因。不支持亚秒精度。对不起!

【讨论】:

感谢 Ixt 的回答。没关系。无论如何我解决了它,但只是想知道为什么。

以上是关于使用 timeIntervalSince1970 转换时,如何使 fileCreationDate 精确到小数点后 6 位?的主要内容,如果未能解决你的问题,请参考以下文章

UTC 中的 NSTimeInterval?

Quickblox 用户在线状态 IOS

如何在 Firebase 中获取日期

将秒转换为一天中的时间

iOS-NSSDate的使用

iOS图标抖动效果