go 获取是第几周_golang判断当前时间是第几周的方法
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判断当前时间是第几周的方法相关推荐
- 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 ...
- 通过时间戳,计算距离下一个周二和周六的时间距离
时间戳是世界时间,通过它计算小时会比东八区少8个小时,得加8才是北京时间: -_-.,我竟然不知道.但是getHours()方法拿到的是电脑本地的时间. 踩了个坑,记录下避免下次忘记. 得➕8 得➕8 ...
- 在线计算一周的开始结束时间
在线计算一周的开始结束时间 在线计算一周的开始结束时间 平年365天,即52周余一天,闰年366天,即52周余二天,如果按周次表来计的话,当年的第一周如果不是在星期日开始的话,也就是说,这一年的第一周 ...
- 判断当前时间为本月的第几周,本周的第几天
MainActivity如下: package cc.test;import java.text.SimpleDateFormat; import java.util.Calendar; import ...
- java获取一年的周数、单周开始时间与结束时间、一年所有周开始时间与结束时间、月开始时间与结束时间
java获取一年的周数.单周开始时间与结束时间.一年所有周开始时间与结束时间.月开始时间与结束时间 package com.frgk.produce.util;import org.springfra ...
- 如何判断两个日期在一周内
由于原有的方法无法处理两个日期在不同月份的情况,现更新LaTaio的方法如下: // 摘要: // 获取此实例所表示的日期为该月中的第几天. // // 返回结果: // 日组成部分,表示为 1 和 ...
- java正则 括号_java正则表达式获取大括号小括号内容并判断数字和小数亲测可用...
获取大括号小括号内容 项目开发用到了,暂做个简单记录 private static String regex = "\\{([^}]*)\\}";//匹配大括号 private s ...
- 获取对象的属性,并且判断对象属性是否存在
(1)获取对象的属性,并且判断对象属性是否存在 举例: let test = {name:'22',age:67,sex:'man'}; 获取age属性值: 简单写法: if(test &&a ...
- C语言程序设计笔记(浙大翁恺版) 第三周:判断
按照中国大学MOOC上浙江大学翁恺老师主讲的版本所作,B站上也有资源.原课程链接如下: https://www.icourse163.org/course/ZJU-9001 由于是大三抽空回头整理的, ...
- Java正则获取小括号中的内容_java正则表达式获取大括号小括号内容并判断数字和小数亲测可用...
获取大括号小括号内容 项目开发用到了,暂做个简单记录 private static String regex = "\\{([^}]*)\\}";//匹配大括号 private s ...
最新文章
- 两年的等待,近700页干货,同系列累计销量25万+,第三版内容更扎实
- 解决XP系统下HTTP 错误 403.9 - 禁止访问:连接的用户过多的问题
- SpringSecurity分布式整合之验证认证的过滤器
- JQuery .net WebService 参数必须一致
- 技压群雄!2021 NTIRE @CVPR 2021的三冠一亚视频超分方案:BasicVSR++
- mfc控件位置随对话框窗口移动
- RocketMQ入门到入土(五)消息持久化存储源码解析
- Dapper Sqlpara where in
- 设计一函数,求整数区间[a,b]和[c,d]的交集
- 大疆水弹机器人_现身央视的大疆机甲大师 S1 备受瞩目的教育机器人圆了儿时机甲梦...
- 8代cpu能装linux 系统吗,Intel支持八九代酷睿的B365芯片组将登场亮相
- mysql 游标动态传参数_Mysql 游标施用动态变量
- es6中的静态属性和方法
- 用vs2022实现c++简单游戏2-别碰方块
- EasyExcel组件导出Excel文件
- 苹果手机如何关闭自动续费_微信支付宝一键关闭自动续费
- 夹缝中的垂直母婴电商贝莱优品们:生存之道怎么挖?
- 搜狗站群系统需要准备哪些?如何使用搜狗工具实现网站收录
- 二级导航菜单使用方法以及常见问题
- HTML5播放器示例写法