コード例 #1
0
ファイル: ZipUtil.cs プロジェクト: bastie/NetVampire
        /**
         * Convert a Date object to a DOS date/time field.
         *
         * <p>Stolen from InfoZip's <code>fileio.c</code></p>
         * @param t number of milliseconds since the epoch
         * @return the date as a byte array
         */
        public static byte[] toDosTime(long t)
        {
            java.util.Calendar c = java.util.Calendar.getInstance();
            c.setTimeInMillis(t);

            int year = c.get(java.util.Calendar.YEAR);

            if (year < 1980)
            {
                return(copy(DOS_TIME_MIN)); // stop callers from changing the array
            }
            int  month = c.get(java.util.Calendar.MONTH) + 1;
            long value = ((year - 1980) << 25)
                         | (month << 21)
                         | (c.get(java.util.Calendar.DAY_OF_MONTH) << 16)
                         | (c.get(java.util.Calendar.HOUR_OF_DAY) << 11)
                         | (c.get(java.util.Calendar.MINUTE) << 5)
                         | (c.get(java.util.Calendar.SECOND) >> 1);

            return(ZipLong.getBytes(value));
        }