【发布时间】:2016-05-30 11:25:17
【问题描述】:
以下 shell 命令在 golang 中的等效代码是什么?
date -u +%Y-%m-%dT%T%z
【问题讨论】:
标签: go
以下 shell 命令在 golang 中的等效代码是什么?
date -u +%Y-%m-%dT%T%z
【问题讨论】:
标签: go
package main
import (
"time"
"fmt"
)
func main(){
fmt.Println(time.Now().Format(time.RFC3339))
}
【讨论】:
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05-0700"))
}
【讨论】:
我有以下规格:
YYYY-MM-DDThh:mm:ss.sssZ
最终的Z 明确出现在示例中。
我是这样处理的:
time.RFCxxx
这是
2006-01-02T15:04:05.999Z
【讨论】:
ISO8601 允许不同级别的粒度。您可以只有一年、年+月、年+月+日、添加时间部分,还可以选择添加时区部分。但是,Go 的内置时间解析要求您提前知道将包含哪些部分。
github.com/btubbs/datetime 库提供了一个更灵活的解析器,可以处理所有常用的 ISO8601 格式。见https://github.com/btubbs/datetime
披露:我编写了那个库。
【讨论】:
将格式中的符号替换为 Z 会触发 ISO 8601 行为。这正是 time.RFC3339。如果您希望字符串输出以“Z”结尾,则需要转换为 UTC 时区。
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println(time.Now().UTC().Format("2006-01-02T15:04:05Z07:00"))
}
// this is the same format used by RFC3339. just a note on why.
【讨论】: