美文网首页
使用time包获取指定数量年、季度、月、周边界

使用time包获取指定数量年、季度、月、周边界

作者: JuMinggniMuJ | 来源:发表于2022-07-25 08:38 被阅读0次
1.定义返回数据结构体:
type formatBorder struct {
     Start string  `json:"start"`
     End   string  `json:"end"`
     Name  string  `json:"name"`
}
2.获取年边界:
func yearDemo(num int) ([]formatBorder) {
     res := make([]formatBorder,num)
     now := time.Now()
     for i :=0 ; i < num ; i++{
         year := now.AddDate(-i,0,0).Year()
         res[num-i-1] = formatBorder{fmt.Sprintf("%v-01-01",year), fmt.Sprintf("%v-12-31",year), fmt.Sprintf("%v年",year)}
     }
     return res
}
3.获取季度边界:
func quarterDemo(num int) ([]formatBorder) {
     res := make([]formatBorder,num)
     now := time.Now()
     for i :=0 ; i < num ; i++{
         local := now.AddDate(0,-3*i,0)
         start , end , name  , year:= "" , "" ,"" , local.Year()
         switch int(local.Month()) {
         case 1,2,3:
             start = fmt.Sprintf("%v-01-01",year)
             end   = fmt.Sprintf("%v-03-31",year)
             name  = fmt.Sprintf("%v-Q1",year)
         case 4,5,6:
             start = fmt.Sprintf("%v-04-01",year)
             end   = fmt.Sprintf("%v-06-30",year)
             name  = fmt.Sprintf("%v-Q2",year)
         case 7,8,9:
             start = fmt.Sprintf("%v-07-01",year)
             end   = fmt.Sprintf("%v-09-30",year)
             name  = fmt.Sprintf("%v-Q3",year)
         default:
             start = fmt.Sprintf("%v-10-01",year)
             end   = fmt.Sprintf("%v-12-31",year)
             name  = fmt.Sprintf("%v-Q4",year)
         }
         res[num-i-1] = formatBorder{start,end,name}
     }
     return res
}

4.获取月边界:
func monthDemo(num int) ([]formatBorder){
     res := make([]formatBorder,num)
     dateStart ,_:= time.Parse("2006-01-02",fmt.Sprintf("%v-01",time.Now().Format("2006-01")))
     for i := 0 ; i < num ; i++ {
         start := dateStart.AddDate(0,-i,0).Format("2006-01-02")
         end   := dateStart.AddDate(0,-(i-1),-1).Format("2006-01-02")
         name  := fmt.Sprintf("%v年%v月",start[0:4],start[5:7])
         res[num-i-1] = formatBorder{start,end,name}
     }
     return res
}
5.0 周边界:
func weekendBase(t time.Time) formatBorder{
    start , end := "" , ""
    switch int(t.Weekday()) {
    case 0:
        start = t.AddDate(0,0,-6).Format("2006-01-02")
        end   = t.Format("2006-01-02")
    default:
        start = t.AddDate(0,0,-int(t.Weekday())+1).Format("2006-01-02")
        end   = t.AddDate(0,0,7-int(t.Weekday())).Format("2006-01-02")
    }
    return formatBorder{start,end,"周边界"}
}
5.1 本周边界:
func thisWeekendBorder() formatBorder{
     return weekendBase(time.Now())
}
5.2 上周边界:
func preWeekendBorder() formatBorder{
     return weekendBase(time.Now().AddDate(0,0,-7))
}
5.3 下周边界:
func nextWeekendBorder() formatBorder{
     return weekendBase(time.Now().AddDate(0,0,7))
}

相关文章

  • 使用time包获取指定数量年、季度、月、周边界

    1.定义返回数据结构体: 2.获取年边界: 3.获取季度边界: 4.获取月边界: 5.0 周边界: 5.1 本周边...

  • rust时间相关方法

    一.rust获取时间戳 使用time包获取时间戳Cargo.toml

  • PHP类方法、继承,时间戳

    获取指定日期的时间戳strtotime('2017-2-20');time();获取当前时间戳 类中使用数据库 _...

  • 关于国际化语言

    之前情况:有指定语言包就从指定语言包里面获取.没有对应的语言包就使用中文. 当前需求:没有对应的语言包就使用英文 ...

  • python 入门(九) 日期和时间

    获取当前时间戳 引入 time 模块 使用time() 方法 每个时间戳都以自从1970年1月1日午夜(历元)经过...

  • js 获取当前月日期

    1、获取指定年指定月的天数 2、获取当前月的天数 3、获取当前月的所有日期

  • Golang时间日期

    使用time获取时间

  • Maven scope

    说在最前面:理解事物需要看清它的边界。 dependency中的scope是用来指定依赖包的使用范围。 那么依赖包...

  • Time 包使用

    简介 time 顾名思义,该包提供了时间相关的操作function,使用需要 import "time" 数据类型...

  • 玩转PHP的date函数

    $time为传入的时间戳 获取指定时间戳的周一零点时间 获取指定时间戳的周日结束的时间

网友评论

      本文标题:使用time包获取指定数量年、季度、月、周边界

      本文链接:https://www.haomeiwen.com/subject/xlxoirtx.html