【问题标题】:Android Timestamp overflowAndroid 时间戳溢出
【发布时间】:2018-02-13 17:13:59
【问题描述】:
public static final long ONE_MONTH_INTERVAL = 1000 * 60 * 60 * 24 * 30;
public static final long THREE_MONTHS_INTERVAL = 1000 * 60 * 60 * 24 * 90;

这两行给了我这个警告:

表达式中的数值溢出

确实考虑到 long 可以达到 2,147,483,647 最大值和一个月的毫秒数已经达到 2,592,000,000

我想知道如何避免溢出(除了在几秒钟内转换它)。

顺便说一句,情况如何:

long currentDate = System.currentTimeMillis();

甚至工作?我的意思是自 epoch 以来的毫秒数远大于 3 个月,那么它是如何成功存储到 long 中的呢?

【问题讨论】:

标签: android timestamp long-integer


【解决方案1】:

试试:

public static final long ONE_MONTH_INTERVAL = 1000L * 60L * 60L * 24L * 30L;
public static final long THREE_MONTHS_INTERVAL = 1000L * 60L * 60L * 24L* 90L;

【讨论】:

  • 非常感谢您解决了我的问题!你能再解释一下吗?
  • 像你提到的乘法是整数乘法不长。所以通过在每个数字的末尾定义 L 来解决这个问题。
  • 也用于最大值检查 Long class MAX_VALUE 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 2013-07-07
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
相关资源
最近更新 更多