开始日期和时间格式

In Go, the current time can be determined using time.Now(), provided by the time package.

在Go中,可以使用time package提供的time.Now()确定当前时间。

t := time.Now()

This will print the system local time. Want UTC instead? append .UTC():

这将打印系统本地时间。 需要UTC吗? 附加.UTC()

The time can be formatted using the time.Format() method:

可以使用time.Format()方法格式化时间:

t := time.Now().UTC()

Want the timestamp?

需要时间戳吗?

t := time.Now().Unix()

使用自定义格式 (Use a custom format)

An example of formatting with a custom format is:

使用自定义格式进行格式化的示例如下:

fmt.Println(t.Format("2006-01-02 15:04:05"))

That 2006-01-02 15:04:05 string looks strange, isn’t it? It’s not like it’s 2006 now! But it will print (at the time of writing) 2017-01-16 12:53:51

2006-01-02 15:04:05字符串看起来很奇怪,不是吗? 现在不像是2006年! 但是它将打印(在撰写本文时) 2017-01-16 12:53:51

If you’re new to Go, this will sound very strange.

如果您不熟悉Go,这听起来奇怪。

Here’s the explanation: Go’s time formatting is unique and different than what you would do in other languages. Instead of having a conventional format to print the date, Go uses the reference date 20060102150405 which seems meaningless but actually has a reason, as it’s 1 2 3 4 5 6 in the Posix date command:

解释如下:Go的时间格式是独特的,并且与其他语言的格式不同。 Go没有使用常规格式来打印日期,而是使用了参考日期20060102150405 ,该日期似乎没有意义,但实际上是有原因的,因为Posix date命令中的date1 2 3 4 5 6

Mon Jan 2 15:04:05 -0700 MST 2006
0   1   2  3  4  5              6

The timezone in the middle would have been the 7 (not really sure why they didn’t pick Mon Jan 2 03:04:05 -0600 MST 2007, by the way)

中间的时区应该是7 (顺便说一下,不确定他们为什么不选择Mon Jan 2 03:04:05 -0600 MST 2007 )

Interesting historical reference: https://github.com/golang/go/issues/444

有趣的历史参考: https//github.com/golang/go/issues/444

使用格式常量 (Use a format constants)

Go provides in the time package some handy constants for commonly used formats:

Go在time包中为常用格式提供了一些方便的常量:

const (
        ANSIC       = "Mon Jan _2 15:04:05 2006"
        UnixDate    = "Mon Jan _2 15:04:05 MST 2006"
        RubyDate    = "Mon Jan 02 15:04:05 -0700 2006"
        RFC822      = "02 Jan 06 15:04 MST"
        RFC822Z     = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
        RFC850      = "Monday, 02-Jan-06 15:04:05 MST"
        RFC1123     = "Mon, 02 Jan 2006 15:04:05 MST"
        RFC1123Z    = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
        RFC3339     = "2006-01-02T15:04:05Z07:00"
        RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
        Kitchen     = "3:04PM"
        // Handy time stamps.
        Stamp      = "Jan _2 15:04:05"
        StampMilli = "Jan _2 15:04:05.000"
        StampMicro = "Jan _2 15:04:05.000000"
        StampNano  = "Jan _2 15:04:05.000000000"
)

You can use them like this:

您可以像这样使用它们:

t := time.Now()
fmt.Println(t.Format(time.ANSIC))

翻译自: https://flaviocopes.com/go-date-time-format/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值