golang 的 time.Time 的最大有效时间到 2157 年吗?

2020-03-20 08:29:58 +08:00
 AmrtaShiva
4628 次点击
所在节点    Go 编程语言
16 条回复
mazyi
2020-03-20 09:13:43 +08:00
英语不好可以翻译
thet
2020-03-20 09:16:16 +08:00
https://github.com/golang/proposal/blob/master/design/12914-monotonic.md
https://zhuanlan.zhihu.com/p/93299132
可以参考一下这个,wall time 存储的是壁钟的时间(该时钟可能会更改以进行时钟同步)
loading
2020-03-20 09:18:47 +08:00
没事,到时再加一位就行了。
64 位只有这么长。

unix 时间戳也加过位。
AmrtaShiva
2020-03-20 10:04:47 +08:00
@loading 怎么加?
loading
2020-03-20 10:05:45 +08:00
@AmrtaShiva 这不是你和我关心的。还有一百多年。
loading
2020-03-20 10:06:32 +08:00
你确有需要就自己写个包,别直接改基础库。
whitehack
2020-03-20 10:55:02 +08:00
1 百多年以后的事还要管?
spadger
2020-03-20 10:57:15 +08:00
我自己的版本号只能到 2127 年,我觉得都够用了,感觉自己活不了那么久。
emeab
2020-03-20 11:09:38 +08:00
2127 年 是不是还会是 x64? 或许计算机都不存在了... 还担心这个
whywhywhy
2020-03-20 11:24:32 +08:00
@emeab 哈哈哈,以前一个计算机就是一栋楼,现在一个计算机直接揣兜里了
AmrtaShiva
2020-03-20 11:28:33 +08:00
@loading 我在写万年历 到今后三千年的时间 看了一下 go 的 time.Time 比较 不能做到小于等于的情况下比较两个时间 这里就得自己搞了
@whitehack
@spadger
看了一下时间比较函数 go 的时间比较就只有大于或者小于 没有等于的情况 时间上刚才看了一下 可以比较出来
```
package main

import (
"fmt"
"time"
)

func difft() (b bool) { //如果日期相等就返回 false

t1 := time.Date(2166, 12, 22, 12, 0, 0, 0, time.UTC)
t2 := time.Date(2166, 12, 22, 12, 0, 0, 0, time.UTC)
b = t1.Before(t2)
fmt.Printf("b:%t\n", b)
return
}

func main() {
fmt.Println("vim-go")
difft()
}

```
QUIOA
2020-03-20 12:36:56 +08:00
想到
loading
2020-03-20 12:44:28 +08:00
你很难估计后面的事,你知道闰秒吗?还有时间调整。

例如
1927 年 12-31 23:54:07
1927 年 12-31 23:54:08
相减,结果应该是
353
si
2020-03-20 16:00:00 +08:00
等 intel/amd x128 的计算机出现就支持更大的时间了[doge]
AmrtaShiva
2020-03-20 19:34:31 +08:00
@loading 知道润秒 这东西早就有人建议取消了 我手里的数据 不打算计算润秒 因为影响可以忽略 我大概看了一下 计算出来的时间和寿星最新版本就是差润秒的时间
reus
2020-04-06 13:42:36 +08:00
@AmrtaShiva time.Time 有 Equal 方法!

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

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

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

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

© 2021 V2EX