使用 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 位?的主要内容,如果未能解决你的问题,请参考以下文章