golang 生成一年的周数

2024-01-09

// GetWeekTimeCycleForGBT74082005 获取星期周期 中华人民共和国国家标准 GB/T 7408-2005
// 参数 year 年份 GB/T 7408-2005
func GetWeekTimeCycleForGBT74082005(year int) (*[]TimeCycle, error) {
	var yearstart time.Time //当年最开始一天
	var yearend time.Time   //当年最后一天
	var yearstartweek int   //当年第一年周几
	var yearendweek int     //当年最后一天周几
	var start time.Time     //周期开始时间
	var end time.Time       //周期结束时间
	var no int              //yyyy0001
	var name string         //名称 xxxx年xxxx周
	var week int            //第几周
	var spanyear = true     //默认能跨年
	var timeCycles []TimeCycle
	var loc, err = time.LoadLocation("Local")
	if err != nil {
		return nil, err
	}
	yearstart, err = time.ParseInLocation("2006-01-02 15:04:05", fmt.Sprintf("%d", year)+"-01-01 00:00:00", loc)
	if err != nil {
		return nil, err
	}
	yearend, err = time.ParseInLocation("2006-01-02 15:04:05", yearstart.AddDate(1, 0, -1).Format("2006-01-02")+" 23:59:59", loc) //加一年 减一天得到
	if err != nil {
		return nil, err
	}
	// Sunday Weekday = iota 星期天 是0
	yearstartweek = int(yearstart.Weekday()) //1月1号是星期几
	yearendweek = int(yearend.Weekday())     //12月31号是星期几
	if yearendweek > 0 && yearendweek <= 3 { //如果今年的最后一天是周1到周3 说明是要被包含的 此时不应该跨年
		spanyear = false
	}
	var addDay = (8 - yearstartweek) % 7 //如果今天是 星期一  则无需处理 如果是0则+1 1则+0 2则+6 3则+5 4则+4 5则+3
	//第一周
	if yearstartweek == 0 || yearstartweek == 5 || yearstartweek == 6 { //当1月1号是周五 周六 或者 周日 则这几天(0-2)是属于上一年的周期
		yearstart = yearstart.AddDate(0, 0, addDay)

	} else { //否则上一年后几天(0-3)是属于这一年的
		yearstart = yearstart.AddDate(0, 0, -1*(yearstartweek-1))
	}
	for {
		start = yearstart.AddDate(0, 0, week*7)
		end, err = time.ParseInLocation("2006-01-02 15:04:05", start.AddDate(0, 0, 6).Format("2006-01-02")+" 23:59:59", loc) //加一周
		if err != nil {
			return nil, err
		}
		week++
		no, _ = strconv.Atoi(fmt.Sprintf("%d%04d", year, week))
		name = fmt.Sprintf("%d年%d周", year, week)
		if start.Year() <= year && //其实年必须在当前年
			(end.Year() == year || //在当前年
				(end.Year() >= year && spanyear)) { //不在当前年 看是否可以跨年
			timeCycles = append(timeCycles, TimeCycle{
				No:        no,
				Name:      name,
				StartTime: start,
				EndTime:   end,
			})
		} else {
			break
		}

	}
	return &timeCycles, nil
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang 生成一年的周数 的相关文章

  • golang-bufio 缓冲扫描

    前面两篇博客 介绍了 bufio 包中的缓冲读和写 bufio go 下面再来介绍一下缓冲扫描 scan go 这个扫描的是用来对缓存读的更高级封装 提供了一些更易用的方法 缓冲扫描 Scanner 提供了一个方便的接口来读取数据 例如使用
  • Go的并发的退出

    有时候我们需要通知goroutine停止它正在干的事情 比如一个正在执行计算的web服务 然而它的客户端已经断开了和服务端的连接 Go语言并没有提供在一个goroutine中终止另一个goroutine的方法 由于这样会导致goroutin
  • golang基础教程

    目录 golang基础教程 一 环境搭建 golang基础教程 二 开发规范及API golang基础教程 三 变量与数据类型概述 golang基础教程 四 基本数据类型 golang基础教程 五 基本数据类型的转换 golang基础教程
  • go字符串详解

    文章目录 摘要 1 byte和rune类型 2 字符串 string 3 练习 反转字符串 摘要 go字符串结构体包含 指向底层存储数组的指针 字符串长度 字符串按utf 8将字符编码成二进制数 然后存储在byte数组中 因为utf 8编码
  • Qt webengine 显示web页面、前后端通信以及下载详解

    概述 官方文档 https doc qt io archives qt 5 11 qtwebengine overview html 翻译文档 Qt5 9 WebEngine 概述 一花一世界 一叶一乾坤 博客园 从Qt5 5开始 Qt W
  • go 进阶 gin实战相关: 五. gin_scaffold 企业脚手架

    目录 一 gin scaffold 企业级脚手架 二 gin scaffold 脚手架安装及使用演示 文件分层解释 开始使用 1 配置开启go mod 功能 2 下载 安装 gin scaffold 3 整合 golang common 4
  • Go 语言注释教程

    注释是在执行时被忽略的文本 注释可用于解释代码 使其更易读 注释还可用于在测试替代代码时防止代码执行 Go支持单行或多行注释 Go单行注释 单行注释以两个正斜杠 开头 在 和行尾之间的任何文本都将被编译器忽略 不会被执行 示例 This i
  • 基于Go语言实现简易Web应用

    目录 前言 Go语言特点 写在使用Go语言实现Web应用前面 创建Web服务器 声明一个结构体操作 加入中间件的使用 使用静态文件服务器 最后 前言 在编程语言中 近几年问世的几个新语言都是非常不错的 比如Go Python Rust等等
  • 为什么最近听说 Go 岗位很少很难?

    大家好 我是煎鱼 其实这个话题已经躺在我的 TODO 里很久了 近来很多社区的小伙伴都私下来交流 也有在朋友圈看到朋友吐槽 Go 上海的大会没什么人 还不如 Rust 大会 比较尴尬 今天主要是看看为什么 Go 岗位看起来近来很难的样子 也
  • 掌握 Go 语言中的循环结构:从基础到高级

    一 if else 分支结构 1 if 条件判断基本写法 package main import fmt func main score 65 if score gt 90 fmt Println A else if score gt 75
  • 有哪些不错的 Golang 开源项目?

    目前人在字节做 Go 开发 寻找 Golang 开源项目学习目的可能是 想学习或者提高自己对 Go 项目的组织和编排能力 想学习 Go 项目的框架设计 想在一些 Go 语法上细节的优化和进阶 我推荐两个项目 一 tinode 这是一个开源的
  • go-zero 开发入门-加法客服端示例

    定义 RPC 接口文件 接口文件 add proto 的内容如下 syntax proto3 package add 当 protoc gen go 版本大于 1 4 0 时需加上 go package 否则编译报错 unable to d
  • go-zero开发入门之网关往rpc服务传递数据1

    go zero 的网关往 rpc 服务传递数据时 可以使用 headers 但需要注意前缀规则 否则会发现数据传递不过去 或者对方取不到数据 go zero 的网关对服务的调用使用了第三方库 grpcurl 入口函数为 InvokeRPC
  • go-zero开发入门-API网关鉴权开发示例

    本文是 go zero开发入门 API网关开发示例 一文的延伸 继续之前请先阅读此文 在项目根目录下创建子目录 middleware 在此目录下创建文件 auth go 内容如下 鉴权中间件 package middleware impor
  • “go mod tidy”之错误“not a valid zip file”

    执行 go mod tidy 时 遇到如下错误 rpc imports github com zeromicro go zero zrpc imports github com zeromicro go zero zrpc resolver
  • Go 语言中切片的使用和理解

    切片与数组类似 但更强大和灵活 与数组一样 切片也用于在单个变量中存储相同类型的多个值 然而 与数组不同的是 切片的长度可以根据需要增长和缩小 在 Go 中 有几种创建切片的方法 使用 datatype values 格式 从数组创建切片
  • 协程-单线程内的异步执行

    1 仿协程实例 不同事件依次顺序执行 coding utf 8 import time def calculate 1 step event name for index in range step print This is s even
  • 【go语言】error错误机制及自定义错误返回类型

    简介 Go 语言通过内置的 error 接口来处理错误 该接口定义如下 type error interface Error string 这意味着任何实现了 Error 方法的类型都可以作为错误类型 在 Go 中 通常使用 errors
  • go开发--操作mysql数据库

    在 Go 中访问 MySQL 数据库并进行读写操作通常需要使用第三方的 MySQL 驱动 Go 中常用的 MySQL 驱动有 github com go sql driver mysql 和 github com go xorm xorm
  • 【go语言】读取toml文件

    一 简介 TOML 全称为Tom s Obvious Minimal Language 是一种易读的配置文件格式 旨在成为一个极简的数据序列化语言 TOML的设计原则之一是保持简洁性 易读性 同时提供足够的灵活性以满足各种应用场景 TOML

随机推荐

  • 2024 年最新版 Java 面试题及答案整理(纯干货,超详细)

    程序员一步入中年 不知不觉便会被铺天盖地的 危机感 上身 曾经的那个少年已经不在 时间就是这样公平 就算你能发明 Java 语言 随着时间的推移 你注定还是要成为慢慢变蔫的茄子 缓缓变黑的葡萄 看着春招就要来临的消息 吓得我周末赶紧拿出了面
  • 广告竞价策略:激发广告变现潜能的关键

    在数字化时代 广告已经成为企业推广品牌 产品和服务的关键手段之一 为了最大程度地发挥广告的效果 广告竞价策略成为广告主和数字营销专业人士关注的焦点 通过巧妙运用竞价策略 广告主可以在激烈的市场竞争中脱颖而出 实现广告变现的潜能 admaoy
  • 回归预测 | Matlab实现RIME-HKELM霜冰算法优化混合核极限学习机多变量回归预测

    回归预测 Matlab实现RIME HKELM霜冰算法优化混合核极限学习机多变量回归预测 目录 回归预测 Matlab实现RIME HKELM霜冰算法优化混合核极限学习机多变量回归预测 效果一览 基本介绍 程序设计 参考资料
  • 2024年如何使用WordPress构建克隆Udemy市场

    您想创建像 Udemy 这样的学习管理 LMS 网站吗 最好的 学习管理系统 工具LifterLMS将帮助您制作像Udemy市场这样的 LMS 网站 目录 Udemy市场是什么 创建 Udemy 克隆所需的几项强制性技术 步骤 1 注册您的
  • 小白成功搭建Elasticsearch 只需五步(包含配置xpack)

    ElasticSearch 安装成功后 是不需要使用用户名和密码就可以访问的 这也是在配置skywalking的apm过程中 连接es数据库无需设置用户名和密码的原因 启动es也非常的简单 在 bin 目录下运行elasticsearch
  • 精密划片机在电子烟芯片上的应用

    随着电子烟市场的不断扩大 电子烟芯片作为核心部件之一 其质量和安全性也受到了越来越多的关注 为了满足市场需求 提高电子烟芯片的制造效率和品质 精密划片机在电子烟芯片制造过程中发挥着越来越重要的作用 精密划片机是一种高精度 高效率的数控设备
  • 将指定文件夹中的图片文件复制到另一个文件夹,并按照自然数递增的命名规则重命名的程序

    文件目录结构 C data photos 1 2 3 4 5 6 7 8 photos new 1 2 3 4 5 6 7
  • 史上最全的中高级 JAVA 工程师面试题汇总有哪些?

    你有面试机会了吗 近期 肯定有很多小伙伴 投出去的简历HR基本上都是已读不回 甚至都没有任何回复 或者平台默认筛选 你的简历HR根本就看不到 即使有些小伙伴简历通过 收到面试邀请了 结果被通知不用面试了 还有些小伙伴 有面试机会了 甚至已经
  • 为什么C语言没有被C++所取代呢?

    今日话题 为什么C语言没有被C 所取代呢 C 的复杂编译器实现和嵌入式平台的限制 使C语言保持了其地位 嵌入式系统多数仅支持C 即使支持C 也会限制某些功能 尤其是异常处理和RTTI 此外 C 引入的功能增加了二进制文件大小和运行时内存占用
  • 【Java】2023年业务实践中遇到的所有OOM情况及实战总结

    OOM分析 实战 引言 一 JVM内存结构 二 JVM OOM错误情况 三 实践 案例一 案例二 案例三 四 总结 五 分析工具推荐 六 参考
  • Mac版 Photoshop 2021---PS2021

    Adobe Photoshop 2021是一款强大的图像处理软件 它可以帮助用户进行各种图像编辑 修饰和合成工作 这款软件拥有先进的图像处理技术 支持多种图像格式 可以轻松实现各种复杂的图像处理任务 它还提供了丰富的滤镜和工具 使用户可以自
  • Mac系统安装Tomcat、创建Java Web项目并配置Tomcat作为服务器

    mac安装Tomcat tomcat下载链接 https tomcat apache org download 80 cgi 解压 访问http localhost 8080 出现如下页面 说明tomcat启动成功 启动成功之后 记得先执行
  • 基于Python + Requests 的Web接口自动化测试框架

    之前采用JMeter进行接口测试 每次给带新人进行培训比较麻烦 干脆用Python实现 将代码和用例分离 易于维护 项目背景 公司的软件采用B S架构 进行数据存储 分析 管理 工具选择 python开发的速度很快 且容易上手 丰富的第三方
  • 用免费敏捷工具Leangoo领歌做敏捷需求管理

    传统的瀑布工作模式使用详细的需求说明书来表达需求 需求人员负责做需求调研 根据调研情况编制详细的需求说明书 进行需求评审 评审之后签字确认交给研发团队设计开发 在这样的环境下 需求文档是信息传递的主体 也是一份契约 然而详细的需求说明书有以
  • 监控显卡显存(python代码)

    一 前言 我和我同学的代码 分别占用14G显存 而显卡的显存只有24G 没有办法同时跑 所以 他先跑 我的代码时刻监控显存的使用情况 只要显卡显存大于14G 我的代码就自动启动 二 代码 import pynvml import time
  • vue 点击改变数组中选中的icon颜色(结合拖拽实现)

    1 vue 点击改变数组中选中的icon颜色 在Vue中 可以通过使用v bind指令来动态地修改元素的样式 要根据点击事件来改变数组中选中图标的颜色 首先需要定义一个data属性来存储当前被选中的索引值或者其他相关信息 然后 在模板中使用
  • 1-创建小程序项目

    注册 打开https mp weixin qq com 点击 立即注册 选择小程序 获取APPID 登录小程序在 开发管理 gt 开发设置 获取 APPID 开发工具 登录小程序在 开发工具 gt 开发者工具 获取 微信开发者工具 创建小程
  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用
  • 微信扫一扫,ios系统扫码失效解决

    问题场景 调用微信扫一扫的 sdk时 安卓系统没有问题 苹果系统怎么点击都没反应 解决一 扫一扫的页面 是需要给接口传递当前页面地址生成签名的 ios系统不行 不能访问根路径 的地址 访问根路径 微信会用根路径签名 签名会过不去 必须用当前
  • golang 生成一年的周数

    GetWeekTimeCycleForGBT74082005 获取星期周期 中华人民共和国国家标准 GB T 7408 2005 参数 year 年份 GB T 7408 2005 func GetWeekTimeCycleForGBT74