我只是通过跟随有关Udemy的教程视频开始学习Go的,我尝试按如下方式打印当前时间
import (
"fmt"
"time"
)
func main(){
t := time.Now()
fmt.Println(t)
}
Run Code Online (Sandbox Code Playgroud)
我得到一个很长的文本作为输出如下
2018-07-04 12:03:07.2911671 +0800 +08 m=+0.002000201
Run Code Online (Sandbox Code Playgroud)
我原本只希望在+0800后面加上a timeZone,那应该是结尾。预期的输出如下所示,也如本教程视频中所示。但是对我来说,结果的形式要长得多。
2018-07-04 12:03:07.2911671 +0530 IST
Run Code Online (Sandbox Code Playgroud)
问题是,为什么同一个命令date.Now()在教师的程序和我的程序之间返回不同的格式?为什么没有设置特定格式,不应该standardize/base返回格式?
您的 Udemy 教程视频已过时。Go 不断更新。例如,单调时钟错误修复:
时间包现在透明地跟踪每个时间值中的单调时间,使两个时间值之间的计算持续时间在挂钟调整的情况下成为安全操作。有关详细信息,请参阅包文档和设计文档。
与往常一样,库有各种小的更改和更新,考虑到 Go 1 对兼容性的承诺。
时间
如果 Time 值具有单调时钟读数,则其字符串表示(由 String 返回)现在包括最后一个字段“m=±value”,其中 value 是格式化为十进制秒数的单调时钟读数。
import "time"time.Now 返回的 Time 包含单调时钟读数。如果时间 t 具有单调时钟读数,则 t.Add 将相同的持续时间添加到挂钟和单调时钟读数以计算结果。因为 t.AddDate(y, m, d)、t.Round(d) 和 t.Truncate(d) 是挂墙时间计算,所以它们总是从结果中去除任何单调时钟读数。由于 t.In、t.Local 和 t.UTC 用于对挂墙时间的解释产生影响,因此它们还会从其结果中去除任何单调时钟读数。去除单调时钟读数的规范方法是使用 t = t.Round(0)。
fmt.Println(t)使用调试格式,因此它打印所有基础time.Time字段。
去除单调时钟读数的规范方法是使用 t = t.Round(0)。
例如,
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
fmt.Println(t)
fmt.Println(t.Round(0))
t2 := time.Now().Round(0)
fmt.Println(t2)
}
Run Code Online (Sandbox Code Playgroud)
游乐场:https : //play.golang.org/p/p_pjRWRB8_y
输出:
2009-11-10 23:00:00 +0000 UTC m=+0.000000001
2009-11-10 23:00:00 +0000 UTC
2009-11-10 23:00:00 +0000 UTC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
203 次 |
| 最近记录: |