昨天给大家出了一个小问答题,不知道大家有没有看。
今天我就对这个问题进行一些简单说明,希望对你的开发能够有一些帮助。
技术问答题
以下程序,你觉得他有没有问题?
internal := util.GetCurrTs() - xxx.LastMarkTs() xCount := internal * 1000 / 178000
注: util.GetCurrTs()–获取当前时间戳,参考值:1459947087 xxx.LastMarkTs()–上一次标记时间,参考值:1456941600 根据参考值,你的运算结果是多少?
很可能的答案是:16884
但是实际上答案是-7244
原因是
// int32 is the set of all signed 32-bit integers.
// Range: -2147483648 through 2147483647.
type int32 int32
internal*1000=3005487000 2147483647
结果为:-1289480296
这个值是超过了int32的最大值:2147483647,对应时间为:2038/1/19 11:14:7
如果大家还在用int32做时间戳的,一定要记得它的时间范围只能到2038/1/19 11:14:7
时间戳用整型,应该用int64。
写在最后
茶歇驿站,一直在坚持,一直也在提高博文的质量,谢谢大家一直以来的关注和建议。现在你们可以直接给我提意见了,我也会保证每天都上去看看的,不然遗漏了大家的消息,就愧对这来之不易的原创、留言功能了。