【发布时间】:2015-04-27 16:00:38
【问题描述】:
我使用 System.currentTimeMillis() 来获取自纪元以来的秒数。 这是一个例子。
long enable_beacon_timestamp = System.currentTimeMillis()/1000;
println(enable_beacon_timestamp);
println(int(enable_beacon_timestamp));
enable_beacon(int(enable_beacon_timestamp));
输出给出:
>>1424876956
>>1424876928
所以问题是转换值不匹配。我想要的是让第一个输出与整数相同。
你能提供一些背景为什么会发生这种情况吗?
【问题讨论】:
-
该代码不应编译。 Java 中没有
int方法。 -
应该是
(int)enable_beacon_timestamp -
有时,long 中的值会超过整数值允许的限制。查找 docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html 以便能够正确投射您的长。
-
@KevinAvignon 他的号码示例不超过
Integer.MAX_VALUE的2,147,483,647,所以如果他改成我上面说的应该没问题。 -
仍然注意 Kevin Aivgnon 关于 long 可以超过
Integer变量的最大值这一事实的评论。
标签: java casting timestamp epoch