为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用golang获取当月的开始日期和结束日期?

如何使用golang获取当月的开始日期和结束日期?

Go
BIG阳 2023-05-04 17:33:56
我想制作一个简单的 golang 程序,它只告诉我当前月份的开始日期和月份的结束日期。还有一个条件是,如果用户将输入月份和年份,那么它将给我该年和月份的开始日期和结束日期。为此,我尝试了以下程序,但它不会给我正确的结果:package mainimport (  "fmt"  "time")func main() {  var year int  var month int  year = 2018  month = 1  if year != 0 && month != 0 {     t2 := time.Now().AddDate(year, month, 0)    fmt.Println(t2)  } else {    t2 := time.Now().AddDate(0, 0, 0)    fmt.Println(t2) }}去游乐场链接任何人都可以告诉我如何更正程序。提前致谢。
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

您可以在 golang 本身中使用时间包。

package main


import (

    "fmt"

    "time"

)


func main() {

    t := time.Now()

    fmt.Println(BeginningOfMonth(t))

    fmt.Println(EndOfMonth(t))


    // If you need only date use Format(). But remember Format() will return as a string

    dateFormat := "2006-01-02"

    fmt.Println(BeginningOfMonth(t).Format(dateFormat))

    fmt.Println(EndOfMonth(t).Format(dateFormat))

}


func BeginningOfMonth(t time.Time) time.Time {

    return time.Date(t.Year(), t.Month(), 1, 0, 0, 0, 0, t.Location())

}


func EndOfMonth(t time.Time) time.Time {

    return BeginningOfMonth(t).AddDate(0, 1, 0).Add(-time.Second)

}

输出:

2018-10-01 00:00:00 +0530 实际

2018-10-31 23:59:59 +0530 是

2018-10-01

2018-10-31


查看完整回答
反对 回复 2023-05-04
?
绝地无双

TA贡献1946条经验 获得超4个赞

例如,


package main


import (

    "fmt"

    "time"

)


func monthInterval(y int, m time.Month) (firstDay, lastDay time.Time) {

    firstDay = time.Date(y, m, 1, 0, 0, 0, 0, time.UTC)

    lastDay = time.Date(y, m+1, 1, 0, 0, 0, -1, time.UTC)

    return firstDay, lastDay

}


func main() {

    var (

        y int

        m time.Month

    )


    y, m, _ = time.Now().Date()

    first, last := monthInterval(y, m)

    fmt.Println(first.Format("2006-01-02"))

    fmt.Println(last.Format("2006-01-02"))


    y, m = 2018, time.Month(2)

    first, last = monthInterval(y, m)

    fmt.Println(first.Format("2006-01-02"))

    fmt.Println(last.Format("2006-01-02"))

}

输出:


2018-10-01

2018-10-31

2018-02-01

2018-02-28

游乐场:https://play.golang.org/p/TkzCo9jLpZR


查看完整回答
反对 回复 2023-05-04
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

嗯,你只需要看看下面我为你写的代码,然后阅读评论并学习它。通过在 golang 中引用this和 this time 包:

package main


import (

 "fmt"

 "strings"

 "time"

)


func main() {

 var year int

 year = 2019

 currentLocation := time.Now().Location() // got current location

 if year != 0 {

    firstOfMonth := time.Date(year, time.February, 1, 0, 0, 0, 0, currentLocation) // first date of the month

    fmt.Println(firstOfMonth)

    lastOfMonth := firstOfMonth.AddDate(0, 1, -1).Format("2006-01-02 00:00:00 -0000") // last date of the month 

    fmt.Println(lastOfMonth)

    onlyDate := strings.Split(lastOfMonth, " ")

    fmt.Println(onlyDate[0])

 } 

}

已编辑


package main


import (

 "fmt"

 "time"

)


func main() {

 month := 1

 fmt.Println(time.Month(month))

}

将 int month 转换为 time link playground


查看完整回答
反对 回复 2023-05-04
  • 3 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信