前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang实现自然周计算

golang实现自然周计算

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

最近看到一个题;如何算每一年的自然周? 什么叫自然周?:自然周指的是星期一到星期天。 一个自然周是7天,其实我们需要算出来自然周,这个思路是要获取这一年第一周是有几天,后面的每周都是7天。然后这样计算也就非常方便了。按照这个思路我们来看下我们的代码实现。

代码语言:javascript
复制
package main

import (
    "fmt"
    "time"
)

func main() {
    //某个时间
    //oneTimeStr := "2018-01-08 00:00:00"
    oneTimeStr := "2021-04-05 00:00:00"
    //时间转换成time.Time格式
    t, err := time.ParseInLocation("2006-01-02 15:04:05", oneTimeStr, time.Local)
    if err != nil {
        fmt.Println(err)
        return
    }
    //获取这个时间的基于这一年有多少天了
    yearDay := t.YearDay()
    //获取上一年的最后一天
    yesterdayYearEndDay := t.AddDate(0, 0, -yearDay)
    //获取上一年最后一天是星期几
    dayInWeek := int(yesterdayYearEndDay.Weekday())
    //第一周的总天数,默认是7天
    firstWeekDays := 7
    //如果上一年最后一天不是星期天,则第一周总天数是7-dayInWeek
    if dayInWeek != 0 {
        firstWeekDays = 7 - dayInWeek
    }

    week := 0
    //如果这一年的总天数小于第一周总天数,则是第一周,否则按照这一年多少天减去第一周的天数除以7+1 但是要考虑这一天减去第一周天数除以7会取整型,
    //所以需要处理两个数取余之后是否大于0,如果大于0 则多加一天,这样自然周就算出来了。
    if yearDay <= firstWeekDays {
        week = 1
    } else {
        plusDay := 0
        if (yearDay-firstWeekDays)%7 > 0 {
            plusDay = 1
        }
        week = (yearDay-firstWeekDays)/7 + 1 + plusDay
    }
    fmt.Printf("%d%d", t.Year(), week)
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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