如何从 5 位数字中获取日期
How to get the date from a 5 digit number
从我的代码中,我得到制造日期如下:
.....
- (NSDictionary *)getBatteryInfo
{
matching = IOServiceNameMatching("AppleSmartBattery");
entry = IOServiceGetMatchingService(kIOMasterPortDefault, matching);
IORegistryEntryCreateCFProperties(entry, &properties, NULL, 0);
return (__bridge NSDictionary *)properties;
}
......
NSDictionary *Info = [self getBatteryInfo];
NSNumber *manufacturerDate = [Info objectForKey:@"ManufactureDate"];
我在 macbook 上尝试了这些代码,得到的日期是 17492,我还使用从 App store 安装的应用程序检查了日期,知道确切的日期是 2014/02/20。
在另一台 macbook 上,我得到的日期是 16727,准确的日期是 2012/10/23。
谁能告诉我如何用这 5 位数字计算准确的日期。
根据第 5.1.26 节中的智能电池数据规范修订版 1.1,日期在位域中发布 (see)
- 位 0...4 => 天(值 1-31;5 位)
- 位 5...8 => 月(值 1-12;4 位)
- 位 9...15 => 自 1980 年以来的年份(值 0-127;7 位)
更新。范例
17492 是二进制表示法 0100010001010100(16 位数字的无符号解释)。所以,
- 位 0...4 => 10100 => 20 天
- 位 5...8 => 0010 => 2 个月
- 位 9...15 => 34 + 1980 = 2014 年
因此,我们得到 17492 是 2014/02/20
从我的代码中,我得到制造日期如下:
.....
- (NSDictionary *)getBatteryInfo
{
matching = IOServiceNameMatching("AppleSmartBattery");
entry = IOServiceGetMatchingService(kIOMasterPortDefault, matching);
IORegistryEntryCreateCFProperties(entry, &properties, NULL, 0);
return (__bridge NSDictionary *)properties;
}
......
NSDictionary *Info = [self getBatteryInfo];
NSNumber *manufacturerDate = [Info objectForKey:@"ManufactureDate"];
我在 macbook 上尝试了这些代码,得到的日期是 17492,我还使用从 App store 安装的应用程序检查了日期,知道确切的日期是 2014/02/20。
在另一台 macbook 上,我得到的日期是 16727,准确的日期是 2012/10/23。 谁能告诉我如何用这 5 位数字计算准确的日期。
根据第 5.1.26 节中的智能电池数据规范修订版 1.1,日期在位域中发布 (see)
- 位 0...4 => 天(值 1-31;5 位)
- 位 5...8 => 月(值 1-12;4 位)
- 位 9...15 => 自 1980 年以来的年份(值 0-127;7 位)
更新。范例
17492 是二进制表示法 0100010001010100(16 位数字的无符号解释)。所以,
- 位 0...4 => 10100 => 20 天
- 位 5...8 => 0010 => 2 个月
- 位 9...15 => 34 + 1980 = 2014 年
因此,我们得到 17492 是 2014/02/20