当前位置: 首页 > 面试题库 >

年中的Java毫秒

端木高邈
2023-03-14
问题内容

我正在使用毫秒在Java中进行一些日期计算,并注意到以下问题:

private static final int MILLIS_IN_SECOND = 1000;
    private static final int SECONDS_IN_MINUTE = 60;
    private static final int MINUTES_IN_HOUR = 60;
    private static final int HOURS_IN_DAY = 24;
    private static final int DAYS_IN_YEAR = 365; //I know this value is more like 365.24...
    private static final long MILLISECONDS_IN_YEAR = MILLIS_IN_SECOND * SECONDS_IN_MINUTE * MINUTES_IN_HOUR * HOURS_IN_DAY * DAYS_IN_YEAR;


System.out.println(MILLISECONDS_IN_YEAR);  //Returns 1471228928

我知道1年 大约 是31,556,952,000毫秒,所以我的乘法不知何故。

谁能指出我做错了什么?我应该使用很长时间吗?


问题答案:

我应该使用很长时间吗?

是。问题是,由于MILLIS_IN_SECOND等等都是ints,当您将它们相乘时会得到一个int。你是转换int到一个long,但只有
int乘法已经导致了错误的答案。

要解决此问题,您可以将第一个强制转换为long

    private static final long MILLISECONDS_IN_YEAR =
        (long)MILLIS_IN_SECOND * SECONDS_IN_MINUTE * MINUTES_IN_HOUR
        * HOURS_IN_DAY * DAYS_IN_YEAR;


 类似资料:
  • 问题内容: 如何在Java中获取当前时刻的年,月,日,时,分,秒和毫秒?我想把它们当作。 问题答案: 您可以为此使用吸气剂。 或者,当您尚未使用Java 8时,请使用。 不管哪种方式,到目前为止都将打印: 要转换成,请使用。 如果您的意图 毕竟 是以一种人类友好的字符串格式来排列和显示它们,那么最好使用Java8的(此处的教程), 或者,如果您尚未使用Java 8,请使用: 无论哪种方式,都会产生

  • 我可以使用对expected进行中继,使它们相等,但是,这意味着每次对被测试的转换器类进行比较(isAfter,isBefore,equals),都必须应用中继。 对于JDK 11(或者我可能错过的文档:),是否有适当的方法在到之间进行转换,反之亦然? 更新: 现有的测试似乎验证的是,给定一个长值,我应该得到相同的LocalDateTime等价物,这是通过使用给定的(转换为长值的LocalDate

  • 问题内容: 我有一个DatePicker d;我需要获取日期的毫秒值。(自1970年以来的毫秒值) 我该怎么做? 问题答案: 创建一个日历对象,并从日期选择器和today.getTimeInMillis()中设置日期和时间。

  • 在Java中像< code > system . current time millis()这样的C程序中,有可能得到实际的毫秒数吗?我知道< code>time(),但是我认为它不足以精确地测量短时间,不是吗?

  • 键入结束年度:2013 2008年是闰年 2012年是闰年 非常感谢您的回复!帮助我学到了比我的讲师实际教的更多的东西:)

  • 这看起来应该很简单,但到目前为止,我尝试的方法都不管用。基本上,我想将一个文件时间(以毫秒为单位)从1970年(通常)转换为一个临时的Accessor,然后再转换为一个RFC1123格式的字符串。然而,虽然我可以得到编译的示例,但也会出现运行时错误。例如: 结果 线程“main”java中出现异常。时间世俗的UnsupportedTemporalTypeException:不支持的字段:DayOf