为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

动漫人物 2021-10-20 14:20:55
我正在用 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()为正确的天数、小时数、分钟数和秒数。但是,当转换为月份和年份时,它会得到错误的值(1045 年和 -903 个月显然是错误的值)。转换为年和月时我到底做错了什么?
查看完整描述

1 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

你得到一个整数范围溢出。该数字1000 * 60 * 60 * 24 * 365太大而无法放入整数。

而是使用长数字进行计算:

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

等等。

使 1000 成为一个长常数,强制所有乘法的长整数算术。


查看完整回答
反对 回复 2021-10-20
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信