java - System.currentTimeMillis() 转 int 返回负值

标签 java android type-conversion

我正在开发一个应用程序,在其中动态添加 View 并使用分配唯一的 id,但它返回负值:

long time = System.currentTimeMillis();
view.setId((int)time);

所以我在谷歌上搜索并找到了另一个解决方案,但它也不起作用。它还返回负值:

Long time = System.currentTimeMillis();
view.setId(time.intValue());

那么如何安全地将 System.currentTimeMills() 返回的 long 值转换为 int 呢?

System.currentTimeMills() 返回 1505645107314,而转换为 int 返回 -1888413582

最佳答案

当一个大的long值被转换为int时,该值将会改变。您可能需要将时间除以 1000 以获得以秒为单位的时间,或者从 1 天前的时间中减去该值(取决于您喜欢的唯一性)并将其用作 View 的 id。

view.setId((int)(time/1000)); //this gives unique id for every second.

编辑 使用以下代码获取每毫秒的唯一 ID:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
long yesterday = calendar.getTimeInMillis();
int uniqueId = (int) (yesterday - System.currentTimeMillis());

关于java - System.currentTimeMillis() 转 int 返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263300/

相关文章:

java - 使用 Hibernate 时出现 StringIndexOutOfBoundsException

java - 异常 : org. hibernate.SessionException: session 已关闭

android - 运行阻塞请求

php - PHP 中的数学错误 - 数字被截断?

python - NumPy 或 Pandas : Keeping array type as integer while having a NaN value

python - 为 pandas DataFrame 中的每一列分配数据类型 - Python

java - 如何只获取字符串的最后一个字母而不是整个字符串

java - 从 java List 对象创建 XML 的最有效方法

android - 根据文本值更改文本颜色

java - for循环中的计数器