时间格式的奇怪行为

huangapple go评论88阅读模式
英文:

Time format weird behavior

问题

这是一个更大代码的一部分。我有点困惑,如果我在下面的格式中使用其他数字,结果会出错。

所以,如果我尝试使用:

fmt.Println(time.Now().Format("2006-01-02 12:04:05-04:00"))

结果是错误的。即使格式相同,只是数字不同。

package main

import (
    "fmt"
    "time"
)


func main() {

    fmt.Println(time.Now().Format("2006-01-02 15:04:05-07:00"))

}

所以我的问题是为什么会这样。格式中的数字没有意义,它们只是格式的表示。

英文:

This is a part of a bigger code. I am little confused that if I use any other digit in the below format it results in wrong values.

so instead of

fmt.Println(time.Now().Format("2006-01-02 15:04:05-07:00"))

if I try to use

 fmt.Println(time.Now().Format("2006-01-02 12:04:05-04:00"))

Result is wrong. Even when it is same format, just digit change

package main

import (
    "fmt"
    "time"
)


func main() {

    fmt.Println(time.Now().Format("2006-01-02 15:04:05-07:00"))

}

So my question is why is it so. Digits inside format have no meaning. They are just for representation of the format.

答案1

得分: 7

https://golang.org/pkg/time/:

func (Time) Format

func (t Time) Format(layout string) string

根据layout定义的格式,返回时间值的文本表示形式。layout通过展示如何显示被定义为参考时间的时间值

Mon Jan 2 15:04:05 -0700 MST 2006

来定义格式;

如果它是该值,它将被显示;

所以你必须使用参考时间。你不应该将它更改为其他时间。

英文:

From https://golang.org/pkg/time/:
> func (Time) Format
>
> func (t Time) Format(layout string) string
>
> Format returns a textual representation of the time value formatted
> according to layout, which defines the format by showing how the
> reference time, defined to be
>
> Mon Jan 2 15:04:05 -0700 MST 2006
>
> would be displayed if it were the value;

So you must use the reference time. You should not change it to another time.

huangapple
  • 本文由 发表于 2017年4月2日 10:10:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/43163913.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定