44

情况:

当我调用诸如等时间函数时Second()Year()我得到 tye 的结果int。但是当我打电话时Month(),我得到了 type 的结果Month

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

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

..但我不太明白。

问题:

我的代码有以下错误,因为m不是:int

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

问题:

如何得到一个intfrom Month()

4

3 回答 3

70

考虑:

var m time.Month

m的类型基础类型是int,因此可以将其转换int

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

附带说明:问题显示除法' m / time.Month(10)'。除非您想计算一些dekamonth值,否则这可能是一个错误;-)

于 2013-05-22T08:22:00.277 回答
18

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

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

在 go playground 中检查这个最小的例子。

于 2013-05-22T08:17:24.090 回答
4

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

t := time.Now()
fmt.Printf("%d-%02d-%02d", t.Year(), int(t.Month()), t.Day())
于 2021-04-05T07:20:00.710 回答