如何从5位数字中获取日期

jim*_*wan 2 battery objective-c

从我的代码,我得到制造日期如下:

.....
   - (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"];  
Run Code Online (Sandbox Code Playgroud)

我在macbook中尝试了这些代码并获得了17492的日期,我还检查了从App Store安装的应用程序的日期,并知道确切的日期是2014/02/20.

在另一个macbook中,我得到16727日期,确切日期是2012/10/23.谁能告诉我如何用这个5位数字来计算确切的日期.

Bra*_*n89 5

按照5.1.26节中的智能电池数据规范rev 1.1发布日期位()

  • 位0 ... 4 =>天(值1-31; 5位)
  • 位5 ... 8 =>月(值1-12; 4位)
  • 比特9 ... 15 =自1980年以来的年份(价值0-127; 7位)

UPD.例

17492是二进制表示法0100010001010100(16位数字的无符号解释).所以,

  • 位0 ... 4 => 10100 => 20天
  • 比特5 ... 8 => 0010 => 2个月
  • 比特9 ... 15 => 34 + 1980 = 2014年

因此,我们得知17492是2014/02/20