Go中的月份为int

时间:2013-05-22 08:11:59

标签: go

情况:

当我调用Second()Year()等时间函数时,我得到tye int的结果。但是当我致电Month()时,我会得到Month类型的结果。

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

type Month int
...
func (m Month) String() string

..但我不太明白。

问题:

我的代码出现以下错误,因为m int

  

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

问题:

如何从int获取Month()

3 个答案:

答案 0 :(得分:38)

考虑到:

var m time.Month

m底层类型为int,因此它可以是convertedint

var i int = int(m) // normally written as 'i := int(m)'

旁注:问题显示分组“m / time.Month(10)”。除非您想要计算一些 dekamonth 值,否则这可能是一个错误; - )

答案 1 :(得分:9)

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

var m Month = ...
var i int = int(m)

在go操场上查看此minimal example

答案 2 :(得分:1)

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

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