假定给定变量,它包含一个UNIX
时间戳,但是未知是秒还是毫秒格式,我想分配给秒格式的变量
unknown = 1398494489444 # This is millisecond
t = ???
更新:我知道不加限制就不可能说出来,所以就这样
Assume current_ts = current unix timestamp
如果您convert带有x位数的最大时间戳值,以毫秒为单位,则您将得到如下所示:
您的时间戳可以早于2001年吗?如果不是,我认为您可以安全地检查数字是否有13位或更多-如果是,则为毫秒,如果没有,则为秒。当然,这只有在以秒为单位的时间戳也有13位数字时才起作用,这意味着以毫秒为单位的时间戳将有16位数字:
P.S。如果您的时间戳不能追溯到1973年,则可以将条件放宽到12位或更多。条件只有在满足以下条件时才可以使用:
冒着吸引选票的风险,我想记录在案,说不做。
[关于物理量单位的假设是一个可怕的想法-它导致了Mars Meteorological Orbiter的破坏(推力的计算单位为磅,发动机预计为牛顿。推力不足-以及轨道飞行器被烧毁了在大气中)。
如果您对数字的大小有很好的了解,则应该能够对单位进行“有根据的猜测”。例如,如果我告诉您我的体重为230,您可以看着我,并认为“我敢打赌这是磅,而不是公斤”。同样,如果您将我的生日时间戳转换为日期(假设它以秒为单位),而事实证明它是将来的200年,则可以合理地假设“秒”是错误的单位。
但是这样做很危险。
仍然-如果必须这样做,那么一般而言,我建议采用以下方法:
最后一件事很重要-它可以让您从错误中学习。例如,如果您的时间戳记告诉您有关彗星何时下次出现的信息,则可以打印
”不仅是一个很好的建议,而且在任何精确的科学领域中都是必不可少的。彗星的下一个预期出现:2546年12月29日(假设:X的时间戳记以秒为单位)
这样,会有一些“回来”。通常,“ 记录您的假设
最后,将时间戳从ms转换为s是通过将数字除以1000来实现的。但是我确定您知道这一点。
由于您的限制,检测毫秒时间戳很简单。即使过去一年的时间戳仍然比当前时间戳大。