golang判断当前时间是第几周的方法

发布时间:2020-05-23 17:07:41

来源:亿速云

阅读:265

作者:鸽子

Go语言中使用import关键字导入包,包的名字使用双引号("")包裹起来。

golang判断当前时间是第几周:func main() {

l, _ := time.LoadLocation("Asia/Shanghai")

startTime,_ := time.ParseInLocation("2006-01-02", "2018-12-22", l)

endTime,_ := time.ParseInLocation("2006-01-02", "2019-05-17", l)

datas := GroupByWeekDate(startTime, endTime)

for _, d := range datas {

fmt.Println(d)

}

}

//判断时间是当年的第几周

func WeekByDate(t time.Time) string {

yearDay := t.YearDay()

yearFirstDay := t.AddDate(0, 0, -yearDay+1)

firstDayInWeek := int(yearFirstDay.Weekday())

//今年第一周有几天

firstWeekDays := 1

if firstDayInWeek != 0 {

firstWeekDays = 7 - firstDayInWeek + 1

}

var week int

if yearDay <= firstWeekDays {

week = 1

} else {

week = (yearDay-firstWeekDays)/7 + 2

}

return fmt.Sprintf("%d第%d周", t.Year(), week)

}

type WeekDate struct {

WeekTh string

StartTime time.Time

EndTime time.Time

}

// 将开始时间和结束时间分割为周为单位

func GroupByWeekDate(startTime, endTime time.Time) []WeekDate {

weekDate := make([]WeekDate, 0)

diffDuration := endTime.Sub(startTime)

days := int(math.Ceil(float64(diffDuration / (time.Hour * 24))))+1

currentWeekDate := WeekDate{}

currentWeekDate.WeekTh = WeekByDate(endTime)

currentWeekDate.EndTime = endTime

currentWeekDay := int(endTime.Weekday())

if currentWeekDay == 0 {

currentWeekDay = 7

}

currentWeekDate.StartTime = endTime.AddDate(0, 0, -currentWeekDay+1)

nextWeekEndTime := currentWeekDate.StartTime

weekDate = append(weekDate, currentWeekDate)

for i := 0; i < (days-currentWeekDay)/7; i++ {

weekData := WeekDate{}

weekData.EndTime = nextWeekEndTime

weekData.StartTime = nextWeekEndTime.AddDate(0, 0, -7)

weekData.WeekTh = WeekByDate(weekData.StartTime)

nextWeekEndTime = weekData.StartTime

weekDate = append(weekDate, weekData)

}

if lastDays := (days - currentWeekDay) % 7; lastDays > 0 {

lastData := WeekDate{}

lastData.EndTime = nextWeekEndTime

lastData.StartTime = nextWeekEndTime.AddDate(0, 0, - lastDays)

lastData.WeekTh = WeekByDate(lastData.StartTime)

weekDate = append(weekDate, lastData)

}

return weekDate

}

结果:{2019第20周 2019-05-13 00:00:00 +0800 CST 2019-05-17 00:00:00 +0800 CST}

{2019第19周 2019-05-06 00:00:00 +0800 CST 2019-05-13 00:00:00 +0800 CST}

{2019第18周 2019-04-29 00:00:00 +0800 CST 2019-05-06 00:00:00 +0800 CST}

{2019第17周 2019-04-22 00:00:00 +0800 CST 2019-04-29 00:00:00 +0800 CST}

{2019第16周 2019-04-15 00:00:00 +0800 CST 2019-04-22 00:00:00 +0800 CST}

{2019第15周 2019-04-08 00:00:00 +0800 CST 2019-04-15 00:00:00 +0800 CST}

{2019第14周 2019-04-01 00:00:00 +0800 CST 2019-04-08 00:00:00 +0800 CST}

{2019第13周 2019-03-25 00:00:00 +0800 CST 2019-04-01 00:00:00 +0800 CST}

{2019第12周 2019-03-18 00:00:00 +0800 CST 2019-03-25 00:00:00 +0800 CST}

{2019第11周 2019-03-11 00:00:00 +0800 CST 2019-03-18 00:00:00 +0800 CST}

{2019第10周 2019-03-04 00:00:00 +0800 CST 2019-03-11 00:00:00 +0800 CST}

{2019第9周 2019-02-25 00:00:00 +0800 CST 2019-03-04 00:00:00 +0800 CST}

{2019第8周 2019-02-18 00:00:00 +0800 CST 2019-02-25 00:00:00 +0800 CST}

{2019第7周 2019-02-11 00:00:00 +0800 CST 2019-02-18 00:00:00 +0800 CST}

{2019第6周 2019-02-04 00:00:00 +0800 CST 2019-02-11 00:00:00 +0800 CST}

{2019第5周 2019-01-28 00:00:00 +0800 CST 2019-02-04 00:00:00 +0800 CST}

{2019第4周 2019-01-21 00:00:00 +0800 CST 2019-01-28 00:00:00 +0800 CST}

{2019第3周 2019-01-14 00:00:00 +0800 CST 2019-01-21 00:00:00 +0800 CST}

{2019第2周 2019-01-07 00:00:00 +0800 CST 2019-01-14 00:00:00 +0800 CST}

{2018第53周 2018-12-31 00:00:00 +0800 CST 2019-01-07 00:00:00 +0800 CST}

{2018第52周 2018-12-24 00:00:00 +0800 CST 2018-12-31 00:00:00 +0800 CST}

{2018第51周 2018-12-22 00:00:00 +0800 CST 2018-12-24 00:00:00 +0800 CST}

go 获取是第几周_golang判断当前时间是第几周的方法相关推荐

  1. go 获取是第几周_golang 判断当前时间是第几周

    {2019第20周 2019-05-13 00:00:00 +0800 CST 2019-05-17 00:00:00 +0800 CST} {2019第19周 2019-05-06 00:00:00 ...

  2. 通过时间戳,计算距离下一个周二和周六的时间距离

    时间戳是世界时间,通过它计算小时会比东八区少8个小时,得加8才是北京时间: -_-.,我竟然不知道.但是getHours()方法拿到的是电脑本地的时间. 踩了个坑,记录下避免下次忘记. 得➕8 得➕8 ...

  3. 在线计算一周的开始结束时间

    在线计算一周的开始结束时间 在线计算一周的开始结束时间 平年365天,即52周余一天,闰年366天,即52周余二天,如果按周次表来计的话,当年的第一周如果不是在星期日开始的话,也就是说,这一年的第一周 ...

  4. 判断当前时间为本月的第几周,本周的第几天

    MainActivity如下: package cc.test;import java.text.SimpleDateFormat; import java.util.Calendar; import ...

  5. java获取一年的周数、单周开始时间与结束时间、一年所有周开始时间与结束时间、月开始时间与结束时间

    java获取一年的周数.单周开始时间与结束时间.一年所有周开始时间与结束时间.月开始时间与结束时间 package com.frgk.produce.util;import org.springfra ...

  6. 如何判断两个日期在一周内

    由于原有的方法无法处理两个日期在不同月份的情况,现更新LaTaio的方法如下: // 摘要: // 获取此实例所表示的日期为该月中的第几天. // // 返回结果: // 日组成部分,表示为 1 和 ...

  7. java正则 括号_java正则表达式获取大括号小括号内容并判断数字和小数亲测可用...

    获取大括号小括号内容 项目开发用到了,暂做个简单记录 private static String regex = "\\{([^}]*)\\}";//匹配大括号 private s ...

  8. 获取对象的属性,并且判断对象属性是否存在

    (1)获取对象的属性,并且判断对象属性是否存在 举例: let test = {name:'22',age:67,sex:'man'}; 获取age属性值: 简单写法: if(test &&a ...

  9. C语言程序设计笔记(浙大翁恺版) 第三周:判断

    按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...

  10. Java正则获取小括号中的内容_java正则表达式获取大括号小括号内容并判断数字和小数亲测可用...

    获取大括号小括号内容 项目开发用到了,暂做个简单记录 private static String regex = "\\{([^}]*)\\}";//匹配大括号 private s ...

最新文章

  1. 两年的等待,近700页干货,同系列累计销量25万+,第三版内容更扎实
  2. 解决XP系统下HTTP 错误 403.9 - 禁止访问:连接的用户过多的问题
  3. SpringSecurity分布式整合之验证认证的过滤器
  4. JQuery .net WebService 参数必须一致
  5. 技压群雄!2021 NTIRE @CVPR 2021的三冠一亚视频超分方案:BasicVSR++
  6. mfc控件位置随对话框窗口移动
  7. RocketMQ入门到入土(五)消息持久化存储源码解析
  8. Dapper Sqlpara where in
  9. 设计一函数,求整数区间[a,b]和[c,d]的交集
  10. 大疆水弹机器人_现身央视的大疆机甲大师 S1 备受瞩目的教育机器人圆了儿时机甲梦...
  11. 8代cpu能装linux 系统吗,Intel支持八九代酷睿的B365芯片组将登场亮相
  12. mysql 游标动态传参数_Mysql 游标施用动态变量
  13. es6中的静态属性和方法
  14. 用vs2022实现c++简单游戏2-别碰方块
  15. EasyExcel组件导出Excel文件
  16. 苹果手机如何关闭自动续费_微信支付宝一键关闭自动续费
  17. 夹缝中的垂直母婴电商贝莱优品们:生存之道怎么挖?
  18. 搜狗站群系统需要准备哪些?如何使用搜狗工具实现网站收录
  19. 二级导航菜单使用方法以及常见问题
  20. HTML5播放器示例写法

热门文章

  1. 第K顺序统计量的求解
  2. java 百度经纬度 转换为 高德经纬度 谷歌
  3. 计算机Word2010在线做题,Word2010试题练习题库(答案).doc
  4. xp系统开机自检很久_XP系统取消开机自检的5种方法?
  5. 有效沟通沟通的9大技巧
  6. 位操作的应用实例(2)位掩码
  7. 中国万网CEO张向东解读被阿里收购幕后
  8. 用java做一个校园网站,基于jsp的校园网站-JavaEE实现校园网站 - java项目源码
  9. 台式计算机无线网络,台式电脑如何使用无线上网?
  10. stylecloud 自定义蒙版