这个时间系统是什么时候?

时间:2015-01-16 14:32:28

标签: time

我试图理解一些处理特定系统时间的程序,我仍然需要知道。希望你能告诉我什么系统,如果有的话。

其中一个数字是170000000,代表2037年4月26日。另一个例子是164632577,代表2022年12月20日。

我使用EPOCH转换器进行了测试,但是我得到了完全不同的日期,所以它不是EPOCH。有什么线索吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

我们假设将日期转换为奇怪时间单位的公式如下:

f(x) = m*x + b

其中x是奇怪的时间单位,f是天数:

f(2037 * 365.2425 + 31 + 28 + 31 + 26)= 170000000
f(2022 * 365.2425 + 365.2425 - (31 + 1 - 20)= 164632577

因为我们有两个数据点,我们可以制作两个公式:
I:f1 = m * x1 + b
II:f2 = m * x2 + b

现在我们正在寻找:m,b

我们解决如下:

I => III:b = f1 - m*x1

III进入II:f2 = m*x2 + f1 - m*x1 => f2 - f1 = m(x2 - x1) => m = (f2 - f1) / (x2 - x1)

归结为:

m = 1024.04 units/day and (exactly 1024, most likely, because that’s 2^10)

,b = f1 - m * x1

b = -591973731.84 (??)

所以你得到:

从第1年的天数转换为奇怪的时间单位:

f(x) = 1024 * x - 591973731.84  

其中x以天为单位,因此年份为* 365.2524 +(月-1)* 30 +天

测试它揭示了这一点 f(Jan 1st 2038 = 2038*365.2425) = 1024*2038*365.2425 - 591973731.84 = 170255224.3,这比2037年12月20日稍微多一点,所以它有效。

奇怪的是,这些奇怪的时间单位的0点代表大约1582年(f(x) = 0的x的解)。

答案 1 :(得分:3)

170000000似乎非常圆润。你知道你的数字所代表的游戏中的确切秒数吗?

它应该是一个线性系统,你知道(170000000 - 164632577)= 5367423的值等于你的日子(2037-04-26 - 2022-12-20)= 5241天之间的差异。

这意味着有一天是(5241/5367423)= 0.00097644623873 ...

从164632577倒数到零位将我们带回(164632577 * 0.00097644623873 ...)= 160754.86天,从2022-12-20到1582-11-02。

在170000000上进行的相同计算将我们带回(170000000 * 0.00097644623873 ...)= 165995,86天,从2037-04-26到1582-11-02。 Heuruka!

所以,你有一个timeFor($value) = [1582-11-02] + [0.00097644623873... * $value days]的系统。

的问题:

  • 这些数字有几个四舍五入的问题。你的日期很可能包括秒数,但我们计算的是整天。
  • 我们正在回溯,时间旅行相关问题将会出现。这些包括但不限于根据您的日历的非现有日期。

要考虑的事情; 1582年10月15日,或1582-10-15是格里高利日历的开始。这可能是您数据的真正开始日期。

编辑:我之前写道,乘数应该是0.001,但丹尼尔在另一个答案中指出,实际上是1/1024 = 0.0009765625。