前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第三篇-如何通过程序实现连续的时间,比如连续的天,月,年等。

第三篇-如何通过程序实现连续的时间,比如连续的天,月,年等。

作者头像
公众号-利志分享
发布2022-04-25 09:24:19
3760
发布2022-04-25 09:24:19
举报
文章被收录于专栏:利志分享

之前有两篇文章说了clickhouse如何实现连续的时间,第一篇是:如何在clickhouse中实现连续的时间,比如连续的天。第二篇是:如何在clickhouse中实现连续的时间,比如连续的天。这篇我们看看如何通过程序实现连续的天,月,年。

如果通过程序来实现连续的天,连续的月是相对来说是比较简单的,因为程序有现成的时间库递增年,递增月。如果是实现连续,秒,时,日,周就直接通过固定的时间递增处理就行了。

下面我就直接通过go的程序分享一下连续的秒,时,日,周,月,年的实现。下面的是实现连续的功能。

代码语言:javascript
复制
func GetContinueTime(granularity int, startTime, endTime *time.Time) []string {
    timeList := []string{}
    if granularity == 1 {
        //年
        for i := *startTime; i.Before(*endTime); i = i.AddDate(1, 0, 0) {
            tmp := i.Format("2006")
            timeList = append(timeList, tmp)
        }
    } else if granularity == 2 {
        for i := *startTime; i.Before(*endTime); i = i.AddDate(0, 1, 0) {
            tmp := i.Format("2006-01")
            timeList = append(timeList, tmp)
        }
    } else if granularity == 3 {
        for i := startTime.Unix(); i < endTime.Unix(); i = i + 86400 {
            tmp := time.Unix(i, 0).Format("2006-01-02")
            timeList = append(timeList, tmp)
        }
    } else if granularity == 4 {
        for i := startTime.Unix(); i < endTime.Unix(); i = i + 3600 {
            tmp := time.Unix(i, 0).Format("2006-01-02 15")
            timeList = append(timeList, tmp)
        }
    } else if granularity == 5 {
        for i := startTime.Unix(); i < endTime.Unix(); i = i + 60 {
            tmp := time.Unix(i, 0).Format("2006-01-02 15:04")
            timeList = append(timeList, tmp)
        }
    } else if granularity == 6 {
        for i := startTime.Unix(); i < endTime.Unix(); i = i + 604800 {
            tmp := time.Unix(i, 0).Format("2006-01-02")
            timeList = append(timeList, tmp)
        }
    } else {
        for i := startTime.Unix(); i < endTime.Unix(); i = i + 1 {
            tmp := time.Unix(i, 0).Format("2006-01-02 15:04:05")
            timeList = append(timeList, tmp)
        }
    }
    return timeList
}

我们使用如下的调用:

代码语言:javascript
复制
func main() {
    startTime := "2021-01-01 00:00:00"
    endTime := "2021-04-01 00:00:00"
    start, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, time.Local)
    end, _ := time.ParseInLocation("2006-01-02 15:04:05", endTime, time.Local)
    fmt.Println(GetContinueTime(6, &start, &end))
}

返回结果:

代码语言:javascript
复制
[2021-01-01 2021-01-08 2021-01-15 2021-01-22 2021-01-29 2021-02-05 2021-02-12 2021-02-19 2021-02-26 2021-03-05 2021-03-12 2021-03-19 2021-03-26]

好了,连续的时间的分享这一篇是最后一篇,下次分享另外一个话题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 利志分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档