【发布时间】:2019-02-27 14:48:21
【问题描述】:
我刚刚遇到了在 Android 中为通知生成 id 的问题。
我正在查看一些通知处理 SDK,他们正在使用此代码生成通知 ID:
private int generateTimestampId() {
return (int)(new Date().getTime() % 2147483647L);
}
这可能是一个很好的解决方案,但我不明白% 2147483647L 在纪元时间的上下文中代表什么。
(请注意:new Date().getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数)
【问题讨论】:
-
仅供参考,
2147483647L=Integer.MAX_VALUE,32 位有符号整数的限制。 -
啊,谢谢@BasilBourque,所以这只是为了将纪元(通常不适合 int;“整数溢出”dzone.com/articles/overflow-and-underflow-data)限制为 int
-
Date这里是什么类?您调用的getNow方法不是java.util.Date类。 -
此代码:
(int)( (new Date().getTime()) % 2_147_483_647L)当run live at IdeOne.com 返回171515712(171,515,712)。
标签: java push-notification unix-timestamp integer-overflow