Golang Go语言中 time.Time 的最大有效时间到 2157 年吗?

发布于 1周前 作者 bupafengyu 来自 Go语言

Golang Go语言中 time.Time 的最大有效时间到 2157 年吗?

  • 如题
  • 看了一下时间的源码 time.go
  • 在 152 行 maxWall = wallToInternal + (1<<33 - 1) // year 2157 这个注释没看懂什么意思
  • 是不是最大有效时间只能到 2157 年呢?超过了就比较不了了?
  • PS (英文不好所以大部分英文注释没看懂) 请看过源码的有时间说下可以吗 谢谢

更多关于Golang Go语言中 time.Time 的最大有效时间到 2157 年吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

17 回复

英语不好可以翻译

更多关于Golang Go语言中 time.Time 的最大有效时间到 2157 年吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


https://github.com/golang/proposal/blob/master/design/12914-monotonic.md
https://zhuanlan.zhihu.com/p/93299132
可以参考一下这个,wall time 存储的是壁钟的时间(该时钟可能会更改以进行时钟同步)

没事,到时再加一位就行了。
64 位只有这么长。

unix 时间戳也加过位。

怎么加?

这不是你和我关心的。还有一百多年。

你确有需要就自己写个包,别直接改基础库。

1 百多年以后的事还要管?

我自己的版本号只能到 2127 年,我觉得都够用了,感觉自己活不了那么久。

2127 年 是不是还会是 x64? 或许计算机都不存在了… 还担心这个

哈哈哈,以前一个计算机就是一栋楼,现在一个计算机直接揣兜里了

我在写万年历 到今后三千年的时间 看了一下 go 的 time.Time 比较 不能做到小于等于的情况下比较两个时间 这里就得自己搞了


看了一下时间比较函数 go 的时间比较就只有大于或者小于 没有等于的情况 时间上刚才看了一下 可以比较出来
<br>package main<br><br>import (<br> "fmt"<br> "time"<br>)<br><br>func difft() (b bool) { //如果日期相等就返回 false<br><br> t1 := <a target="_blank" href="http://time.Date" rel="nofollow noopener">time.Date</a>(2166, 12, 22, 12, 0, 0, 0, time.UTC)<br> t2 := <a target="_blank" href="http://time.Date" rel="nofollow noopener">time.Date</a>(2166, 12, 22, 12, 0, 0, 0, time.UTC)<br> b = t1.Before(t2)<br> fmt.Printf("b:%t\n", b)<br> return<br>}<br><br>func main() {<br> fmt.Println("vim-go")<br> difft()<br>}<br><br>

你很难估计后面的事,你知道闰秒吗?还有时间调整。

例如
1927 年 12-31 23:54:07
1927 年 12-31 23:54:08
相减,结果应该是
353

等 intel/amd x128 的计算机出现就支持更大的时间了[doge]

知道润秒 这东西早就有人建议取消了 我手里的数据 不打算计算润秒 因为影响可以忽略 我大概看了一下 计算出来的时间和寿星最新版本就是差润秒的时间

time.Time 有 Equal 方法!

针对您提出的关于Golang中time.Time的最大有效时间问题,作为IT营GO语言方面的专家,我给出以下回复:

在Golang中,time.Time类型表示一个具体的时间点,包含了年、月、日、时、分、秒、纳秒等信息。关于time.Time的最大有效时间,它并非固定到某一具体的年份如2157年。

实际上,time.Time的有效时间范围受限于其底层的时间表示方式。在Golang中,时间是以int64类型的纳秒数来表示的,这允许表示的时间范围非常大,远超过2157年。理论上,int64类型的纳秒数可以表示的最大时间间隔约为290年(从某个起始点开始计算),但这并不意味着time.Time类型本身有一个固定的结束年份。

因此,说time.Time的最大有效时间是到2157年是不准确的。在正常情况下,您可以使用time.Time来表示和处理远超过2157年的时间点,只要这些时间点在int64纳秒计数的表示范围内即可。

回到顶部