python - 如何测试给定的时间戳是以秒还是毫秒为单位?

标签 python datetime timestamp unix-timestamp

假设一个给定的变量,它包含一个 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/

相关文章:

java - 如果时间戳映射到数据库/从数据库映射,则 Timestamp#equals() 失败

javascript - 按精确值匹配 PotsgreSQL timestamptz

elasticsearch - 当在Elasticsearch中建立索引时如何在子文档上添加时间戳

windows - 尝试运行 mysqld 时出现时间戳错误

python - 使用 boost python 导入

python - ffmpeg - 在内存而不是磁盘中输出图像

python - 如何在 Python 中读取通用数据格式 (CDF)

c# - DateTime.ParseExact 上的 CultureInfo?

python - 迭代拟合多项式曲线

mysql - 订单日期在 MySql 中存储为 VARCHAR?