【问题标题】:Month to int in Go在 Go 中转换为 int 的月份
【发布时间】:2013-05-22 08:11:58
【问题描述】:

情况:

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

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

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

..但我不太明白。

问题:

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

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

问题:

如何从Month() 获得int

【问题讨论】:

    标签: go


    【解决方案1】:

    考虑:

    var m time.Month
    

    m的类型底层类型是int,所以可以是convertedint

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

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

    【讨论】:

    • ThX,我写的代码是 byte(m/10 + offset) 但工具“聪明”地在错误日志中显示 m / time.Month(10)。
    【解决方案2】:

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

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

    在 go 操场上查看此 minimal example

    【讨论】:

    • 这是真正的转换,而不是类型转换。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-04
      • 2015-08-07
      • 1970-01-01
      • 2011-12-22
      • 2011-12-25
      • 2013-04-05
      • 2016-02-17
      相关资源
      最近更新 更多