code: private static long convertInt96BinaryToTimestamp(Binary value)
    {
      // based on prestodb parquet int96 timestamp conversion
      byte[] bytes = value.getBytes();
  
      // little endian encoding - need to invert byte order
      long timeOfDayNanos =
          Longs.fromBytes(bytes[7], bytes[6], bytes[5], bytes[4], bytes[3], bytes[2], bytes[1], bytes[0]);
      int julianDay = Ints.fromBytes(bytes[11], bytes[10], bytes[9], bytes[8]);
  
      long ts = ((julianDay - JULIAN_EPOCH_OFFSET_DAYS) * MILLIS_IN_DAY) + (timeOfDayNanos / NANOS_PER_MILLISECOND);
      return ts;
    }
docs: convert deprecated parquet int96 nanosecond timestamp to a long, based on
  https://github.com/prestodb/presto/blob/master/presto-hive/src/main/java/com/facebook/presto/hive/parquet/ParquetTimestampUtils.java#L56