/** * 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)); }