【问题标题】:How convert dos datetime to Unix time?如何将 dos datetime 转换为 Unix 时间?
【发布时间】:2013-09-16 08:38:32
【问题描述】:

Unix 时间是从 1970 年开始的秒数。 Java 文件时间是从 1970 年开始的毫秒数。都是格林威治时区。但是dos datetime是位域格式,几位到日、月、年和时间hh,mm,ss, local Timezone。将 Unix 时间转换为文件时间很容易 - mul。 1000. 从 Dos 日期时间转换为 Unix 很困难。 存档库 UnAceV2 具有 Dos 日期时间格式。怎么转成Unix?

【问题讨论】:

    标签: java time


    【解决方案1】:

    查看java.util.zip.ZipEntry.dosToJavaTime(long)java.util.zip.ZipEntry.javaToDosTime(long)的来源

    【讨论】:

      【解决方案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();
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        • 2020-10-09
        • 2014-10-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-31
        相关资源
        最近更新 更多