code: public static Date dec_time( byte[] src, int si, int enc )
      {
          long t;
      
          switch( enc ) {
              case TIME_1970_SEC_32BE:
                  return new Date( dec_uint32be( src, si ) * 1000L );
              case TIME_1970_SEC_32LE:
                  return new Date( dec_uint32le( src, si ) * 1000L );
              case TIME_1904_SEC_32BE:
                  return new Date((( dec_uint32be( src, si ) & 0xFFFFFFFFL) -
                      SEC_BETWEEEN_1904_AND_1970 ) * 1000L );
              case TIME_1904_SEC_32LE:
                  return new Date((( dec_uint32le( src, si ) & 0xFFFFFFFFL) -
                      SEC_BETWEEEN_1904_AND_1970 ) * 1000L );
              case TIME_1601_NANOS_64BE:
                  t = dec_uint64be( src, si );
                  return new Date( t / 10000L - MILLISECONDS_BETWEEN_1970_AND_1601);
              case TIME_1601_NANOS_64LE:
                  t = dec_uint64le( src, si );
                  return new Date( t / 10000L - MILLISECONDS_BETWEEN_1970_AND_1601);
              case TIME_1970_MILLIS_64BE:
                  return new Date( dec_uint64be( src, si ));
              case TIME_1970_MILLIS_64LE:
                  return new Date( dec_uint64le( src, si ));
              default:
                  throw new IllegalArgumentException( "Unsupported time encoding" );
          }
      }
docs: /* Decode times