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

时间:2015-01-07 06:36:50

标签: objective-c battery

从我的代码中,我的生产日期如下:

.....
   - (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位数来计算确切的日期。

1 个答案:

答案 0 :(得分:5)

根据5.1.26节(see)中的智能电池数据规范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 =&gt; 10100 =&gt; 20天
  • 比特5 ... 8 =&gt; 0010 =&gt; 2个月
  • 比特9 ... 15 =&gt; 34 + 1980 = 2014年

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