如何从 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