代码之家  ›  专栏  ›  技术社区  ›  WoeIs

将毫秒转换为月份和年份无法正常工作

  •  2
  • WoeIs  · 技术社区  · 7 年前

    我正在用Java编写一个程序,它试图将毫秒转换成年、月、日、小时、分钟和秒。

    public class convertexercise {
        public static void main(String[] args) {
              System.out.println("Current Time in milliseconds = " + System.currentTimeMillis());
              long[] converter = new long [6];
              converter[0] = System.currentTimeMillis() / (1000 * 60 * 60 * 24 * 365); // years
              converter[1] = System.currentTimeMillis() / (1000 * 60 * 60 * 24 * 30); // months
              converter[2] = System.currentTimeMillis() / (1000 * 60 * 60 * 24); // days
              converter[3] = System.currentTimeMillis() / (1000 * 60 * 60); // hours
              converter[4] = System.currentTimeMillis() / (1000 * 60); // minutes
              converter[5] = System.currentTimeMillis() / 1000; // seconds
              System.out.print(converter[0] + " years, " + converter[1] + " months, " + converter[2] + " days, " + converter[3] + " hours, " + converter[4] + " minutes, " + converter[5] + " seconds.");
        }
    }
    

    我的程序能够转换 System.currentTimeMillis()

    当我转换成年和月的时候,我到底做错了什么?

    1 回复  |  直到 7 年前
        1
  •  6
  •   Henry    7 年前

    你得到一个整数范围溢出。号码 1000 * 60 * 60 * 24 * 365 太大,无法放入整数。

    converter[0] = System.currentTimeMillis() / (1000L * 60 * 60 * 24 * 365); // years
    

    等等。