Go中的月份为int

Nic*_*ick 27 go

情况:

当我打电话时一样的功能Second(),Year()等等,我得到塔伊的结果int.但是当我打电话时Month(),我会得到一个类型的结果Month.

我在在线文档中找到了以下内容:

type Month int
...
func (m Month) String() string
Run Code Online (Sandbox Code Playgroud)

..但我不太明白.

问题:

我的代码有如下错误,因为m没有int:

无效操作:( m / time.Month(10) + offset不匹配类型time.Month和int)

题:

如何获得intMonth()

zzz*_*zzz 45

考虑到:

var m time.Month
Run Code Online (Sandbox Code Playgroud)

m的类型底层类型是int,所以它可以转换int:

var i int = int(m) // normally written as 'i := int(m)'
Run Code Online (Sandbox Code Playgroud)

在旁注:问题显示分裂' m / time.Month(10)'.这可能是一个bug,除非你想计算一些dekamonth值;-)


Bra*_*orm 12

您必须将其显式转换为int:

var m Month = ...
var i int = int(m)
Run Code Online (Sandbox Code Playgroud)

在go操场上查看这个最小的例子.


ozn*_*ozn 7

从技术上讲,这不是 int,但如果您尝试获取像"2020-04-16"(2020 年 4 月 16 日)这样的月份字符串,您可以这样做:

t := time.Now()
fmt.Printf("%d-%02d-%02d", t.Year(), int(t.Month()), t.Day())
Run Code Online (Sandbox Code Playgroud)