Unix 時間は、1970 年の開始から number 秒です。Java ファイル時間は 1970 年からのミリ秒数です。どちらもグリニッジ タイムゾーンです。ただし、dos datetime はビットフィールド形式で、日、月、年、時間 hh、mm、ss、ローカル タイムゾーンに数ビットです。Unix 時間をファイル時間に変換するのは簡単です - mul. 1000. Dos datetime から Unix への変換は困難です。アーカイブ ライブラリ UnAceV2 には Dos datetime 形式があります。どのように Unix に変換しますか?
質問する
1047 次
2 に答える
3
java.util.zip.ZipEntry.dosToJavaTime(long)
とのソースを見てくださいjava.util.zip.ZipEntry.javaToDosTime(long)
于 2013-09-16T08:56:04.070 に答える
2
/** Converts DOS time to Java time (number of milliseconds since epoch). */
private long dosToJavaTime(long dosTime) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, (int) ((dosTime >> 25) & 0x7f) + 1980);
cal.set(Calendar.MONTH, (int) ((dosTime >> 21) & 0x0f) - 1);
cal.set(Calendar.DATE, (int) (dosTime >> 16) & 0x1f);
cal.set(Calendar.HOUR_OF_DAY, (int) (dosTime >> 11) & 0x1f);
cal.set(Calendar.MINUTE, (int) (dosTime >> 5) & 0x3f);
cal.set(Calendar.SECOND, (int) (dosTime << 1) & 0x3e);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime().getTime();
}
于 2013-10-29T18:08:32.830 に答える