假设一个给定的变量,它包含一个 UNIX
时间戳,但是它是秒还是毫秒格式是未知的,我想分配一个秒格式的变量
例如:
unknown = 1398494489444 # This is millisecond
t = ???
更新:我知道如果不给出一些限制就无法判断,所以在这里
- current_ts - 86400 * 365 <未知< current_ts
假设 current_ts = 当前 unix 时间戳
最佳答案
如果你 convert以毫秒为单位的 x 位数的最大时间戳值,您会得到如下结果:
- 9999999999999(13 位)表示 2286 年 11 月 20 日星期六 17:46:39 UTC
- 999999999999(12 位数字)表示 2001 年 9 月 9 日星期日 01:46:39 UTC
- 99999999999(11 位数字)表示 1973 年 3 月 3 日星期六 09:46:39 UTC
您的时间戳可以早于 2001 年吗?如果不是,我认为您可以安全地检查该号码是否有 13 位或更多位 - 如果是,您有毫秒,如果没有,您有秒。当然,这只会在以秒为单位的时间戳也有 13 位之前有效,这意味着以毫秒为单位的时间戳将有 16 位:
- 1000000000000000(16 位)表示 Fri Sep 27 33658 01:46:40 但到那时我将生活在来自 Alpha Centauri 系统的行星上,时间标准可能会有所改变 :)
附:如果您的时间戳不能追溯到 1973 年以后,您可以将条件放宽到 12 位或更多。该条件只能在以下情况下正常使用:
- 100000000000000(15 位)表示 11 月 16 日星期三 5138 09:46:40 因为这在几秒钟内将有 12 位数字,并且会与您的情况重叠
关于python - 如何测试给定的时间戳是以秒还是毫秒为单位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23929145/