猿问

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

我想制作一个简单的 golang 程序,它只告诉我当前月份的开始日期和月份的结束日期。还有一个条件是,如果用户将输入月份和年份,那么它将给我该年和月份的开始日期和结束日期。为此,我尝试了以下程序,但它不会给我正确的结果:


package main


import (

  "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)

 }

}

去游乐场链接

任何人都可以告诉我如何更正程序。

提前致谢。


BIG阳
浏览 186回答 3
3回答

慕娘9325324

您可以在 golang 本身中使用时间包。package mainimport (    "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-012018-10-31

绝地无双

例如,package mainimport (    "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-012018-10-312018-02-012018-02-28游乐场:https://play.golang.org/p/TkzCo9jLpZR

白猪掌柜的

嗯,你只需要看看下面我为你写的代码,然后阅读评论并学习它。通过在 golang 中引用this和 this time 包:package mainimport ( "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 mainimport ( "fmt" "time")func main() { month := 1 fmt.Println(time.Month(month))}将 int month 转换为 time link playground
随时随地看视频慕课网APP

相关分类

Go
我要回答