您确定使用的是unixtime(自纪元以来的秒数),而不是例如Java系统时间(自纪元以来的毫秒数)吗?
例如,unixtime非常
1387233645适合32位int。
但是,毫秒戳
1387233645000对于32位而言太大。以十六进制表示
0x142fd9191c8。取低32位,当解释为Java(即带符号的二进制补码32位整数)时,留给我们的
0xfd9191c8是
-40791608十进制
int数。

您确定使用的是unixtime(自纪元以来的秒数),而不是例如Java系统时间(自纪元以来的毫秒数)吗?
例如,unixtime非常
1387233645适合32位int。
但是,毫秒戳
1387233645000对于32位而言太大。以十六进制表示
0x142fd9191c8。取低32位,当解释为Java(即带符号的二进制补码32位整数)时,留给我们的
0xfd9191c8是
-40791608十进制
int数。