首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未知时间戳参考日期

问未知时间戳参考日期
EN

Stack Overflow用户
提问于 2013-10-04 15:29:27
回答 3查看 386关注 0票数 0

我目前正在处理一个使用未知时间戳机制的系统。

这个系统是在Windows机器上运行的,所以我的第一个想法是它使用某种Windows时代的时间戳,但它似乎没有。

我的目标是将这些时间戳转换为Unix时间戳。

有几个例子:

以下时间戳:2111441659转换为:2013-10-01 11:59

  • 2111441998到2013-10-01 17:14
  • 2111443876到2013-10-02 14:36
  • 2111444089到2013-10-02 17:57

(所有日期均为GMT+2)

我尝试使用上面的数据来计算引用日期,但不知怎么的,每次时间戳都得到了不同的结果。

有人能解释一下这个相当奇怪的问题吗?

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-23 22:38:57

最后,在对时间戳和日期时间进行了许多小时的比较之后,试图发现它们之间的逻辑,我通过反向工程找到了产生时间戳的软件的答案。

结果表明,整数时间戳实际上是日期时间的按位表示。

伪码:

代码语言:javascript
复制
year = TimeStamp >> 20;

month = (TimeStamp >> 16) & 15;

day = (TimeStamp >> 11) & 31;

hour = (TimeStamp >> 6) & 31;

minute = TimeStamp & 63;

*我不知道这是否正确的说法,如果不是,请纠正我。

票数 0
EN

Stack Overflow用户

发布于 2013-10-06 07:55:31

对我来说,这个数字似乎很小,只有几毫秒。我的第一个猜测是秒,但从速度上看,这个数字会随着时间的变化而变化,我认为分钟是一个更好的猜测。对它做一些计算2111441659/60/24/365 = 4017.20254756,这表明这个时代可能在2000年的某个时候?

这里是计算中常见时代的列表,但2000年问题并不存在:)您是如何获得这个时间戳的?

你确定这一年在这台机器上被设定为2013年而不是4013吗?:)这样就符合第一年1月1日的.NET时代了。

票数 0
EN

Stack Overflow用户

发布于 2013-10-06 12:52:20

为了区分您的时间戳和Unix时间戳,让我们将您的时间戳称为计数器。

因此,我们有四个计数器值与其对应的DateTime值。要做的第一件事是计算计数器的单位对应于一个实时单位,比如说第二个。

为了做到这一点,我们需要(1)两个计数器值之间的差d和(2)它们对应的DateTimes之间的差s (以秒为单位)。

考虑到前两个值,我们有d1=2111441998-2111441659=339。2013-10-01 11:59和2013-10-01 17:14 (以秒为单位)的区别是s1=18900。因此,计数器的单位对应于u1=s1/d1=55.7522123894秒。

但是,如果我们对第2对和第3对做同样的操作,我们会发现u2=40.9584664536秒。

类似地,第3对和第4对给我们u3=56.6197183114秒。

因此,我的结论是,计数器值与所提供的相应DateTimes之间没有对齐。这就是为什么每个样本得到不同的结果的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19185106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档