在 PHP 中有什么方法能获取自 0001 年以来经过的秒数?

2017-08-13 01:43:06 +08:00
 lslqtz
具体是 0001 年 1 月 1 日 00:00:00 来经过的秒数...
用其它函数好像都会有误差,有没有什么合适的方法来获取...
3737 次点击
所在节点    问与答
39 条回复
ovear
2017-08-13 01:44:36 +08:00
http://php.net/manual/zh/function.date-diff.php

date_diff — 别名 DateTime::diff()
xfspace
2017-08-13 01:45:16 +08:00
timestamp
lslqtz
2017-08-13 01:46:13 +08:00
@ovear 之前看到过这个,好像有说不准确,先感谢
lslqtz
2017-08-13 01:46:35 +08:00
@xfspace Unix timestamp 是指 1970 年以后的秒数...
ovear
2017-08-13 01:47:32 +08:00
@lslqtz 那要不雇一个大学生帮你算一下。。。好像也不贵
lslqtz
2017-08-13 01:49:34 +08:00
@ovear 其实想自己算,但是。。真的麻烦
ovear
2017-08-13 01:51:45 +08:00
@lslqtz 有啥麻烦的,除了闰年还有啥。。
ovear
2017-08-13 01:52:37 +08:00
润秒要考虑进去的话,就百度加了几次闰秒
lslqtz
2017-08-13 01:56:15 +08:00
@ovear 感觉这么多年的闰年...头大
试了试,只能精确到天数
ovear
2017-08-13 01:56:52 +08:00
@lslqtz 百度成熟的闰年算法。。
lsylsy2
2017-08-13 02:24:10 +08:00
@ovear
@lslqtz
如果算到 0001 年的话,最大的问题是中间历法经过变动,严格来说要把那些一年不是 365/366 天的年代也算进去
lsylsy2
2017-08-13 02:30:47 +08:00
另外 unix 时间戳是没有考虑闰秒的。然后你往前推到人类还没有定义闰秒的年代……
所以获取“从历法的 0001 年以来经过的,2017 年物理学定义中的秒数”,误差可能是天级别( 24*60*60 秒)的;
以我的知识估算了一下,准确到小时问题不大(将历史上的所有修改历法考虑进去,算出一个 0001 年到 1970 年的秒数,然后加上 unix 时间戳)
极限可能是几十几百秒吧(两千年间人类没能观测到的闰秒累计起来)
lslqtz
2017-08-13 02:35:11 +08:00
@lsylsy2 我重新写了算了一下,和我想象的差了 1 秒...
chairuosen
2017-08-13 02:36:43 +08:00
别说闰秒,连小时,分钟也许都没有。你无法定义“ 0001 年 1 月 1 日 00:00:00 ”是哪一刻,所以无法得出结果。
msg7086
2017-08-13 04:28:48 +08:00
@lslqtz 首先你这是从 0 年开始算的吧。第一年是 1 年哦,循环应该是从 1 到 year 吧。

而且,这代码还用循环?

function y($year) {
 $secs = 31536000 * $year;
 $leapdays = floor($year / 4) - floor($year / 100) + floor($year / 400) - floor($year / 3200);
  return $secs + $leapdays * 86400;
}

y(1969) # => 62135596800
lslqtz
2017-08-13 04:34:41 +08:00
@msg7086 所以我用的是 1969 啊…
当时直接看了看顺手改了下 只顾着看没考虑性能…
konakona
2017-08-13 04:43:47 +08:00
@msg7086 你这没考虑闰年啊- -
konakona
2017-08-13 04:44:06 +08:00
@chairuosen 公元 1 年?
konakona
2017-08-13 04:44:36 +08:00
公元 1 年,属公元 1 世纪 00 年代。中国为辛酉年(鸡年),汉平帝元始元年。
lslqtz
2017-08-13 04:48:43 +08:00
去掉我上面那句话...
大概得修,不过实际得出的结果影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/382535

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX