将DAAppearanceTime转换为日期
问题描述:
如何将DAAppearance时间从磁盘仲裁转换为有效的时间戳?将DAAppearanceTime转换为日期
我试过如下:
511348742.912949
1986年3月16日09:
if let appearanceTime = diskinfo["DAAppearanceTime"] as? NSNumber{
print(appearanceTime)
let date = NSDate(timeIntervalSince1970: TimeInterval(appearanceTime))
print(date)
}
我得到正确的DAAppearanceTime回从功能,但转换后的错误年:19:02 +0000
答
"DAAppearanceTime"
密钥没有正式记录,但DiskArbitration框架是开源的。
const CFStringRef kDADiskDescriptionAppearanceTimeKey = CFSTR("DAAppearanceTime" );
/*
* Create the disk description -- appearance time.
*/
time = CFAbsoluteTimeGetCurrent();
object = CFNumberCreate(allocator, kCFNumberDoubleType, &time);
if (object == NULL) goto DADiskCreateFromIOMediaErr;
CFDictionarySetValue(disk->_description, kDADiskDescriptionAppearanceTimeKey, object);
CFRelease(object);
使密钥的值是什么CFAbsoluteTimeGetCurrent()
回报,那就是
绝对时间是在相对于秒计绝对参考日期为2001年1月1日00:00:00 GMT。
你将它转换为Date
这样的:
if let time = diskinfo["DAAppearanceTime"] as? Double {
let date = Date(timeIntervalSinceReferenceDate: time)
print(date)
}
对于价值511348742.912949
这导致 日期2017-03-16 09:19:02 +0000
。
您正在获取时间戳“511348742.912949”的正确日期,您可以在此处进行确认http://www.onlineconversion.com/unix_time.htm –
这意味着DiskArbitration提供了错误的数字吗?时间是正确的,但我的USB记忆棒自1986年以来没有连接 – nja