golang计算任意两个时间点之间所覆盖的天数

  • 前言
  • 例子
  • 思路
  • 实现
  • 验证
  • 小结

前言

有时候我们需要统计某个东西的日平均使用时长,我们就需要将一大段的使用时长拆分到天。

例子

  • 例子1
From: 2020-6-16 22:55:50
To:   2020-6-16 23:55:50

答案:天数应该是1天,duration是1小时

  • 例子2
From: 2020-6-16 22:55:50
To:   2020-6-17 00:01:56

答案:天数应该是2天,第一天的duration是4分10秒,第二天的duration是1分56秒

  • 例子3
From: 2020-6-16 22:55:50
To:   2020-6-18 10:01:56

答案:天数应该是3天,第一天的duration是4分10秒,第二天的duration是24小时,第三天的duration是10小时1分56秒

思路

1、根据起始的时间戳,得出是在哪一天d
2、然后计算出当天d的午夜的时间戳t;
3、拿午夜的时间戳t与结束的时间戳作对比;
4、如果午夜的时间戳t >= 结束的时间戳,则说明停止时间就在d那一天,否则是在d+1
5、后面每天依次类推。

实现

func Days(timestampFrom, timestampTo int64) int {var midnightUnix = func(t time.Time) int64 {y, m, d := t.Date()return time.Date(y, m, d+1, 0, 0, 0, 0, time.Local).Unix()}var days = 0for {if midnightUnix(time.Unix(timestampFrom, 0).AddDate(0, 0, days)) >= timestampTo {days++break}days++}return days
}

验证

直接上验证代码:


func main() {//test1t1 := time.Date(2020, 6, 16, 22, 55, 50, 0, time.Local).Unix()t2 := time.Date(2020, 6, 16, 23, 55, 50, 0, time.Local).Unix()fmt.Printf("test1 days:%d\n", Days(t1, t2))//test2t3 := time.Date(2020, 6, 16, 22, 55, 50, 0, time.Local).Unix()t4 := time.Date(2020, 6, 17, 0, 1, 56, 0, time.Local).Unix()fmt.Printf("test2 days:%d\n", Days(t3, t4))//test3t5 := time.Date(2020, 6, 16, 22, 55, 50, 0, time.Local).Unix()t6 := time.Date(2020, 6, 18, 10, 1, 56, 0, time.Local).Unix()fmt.Printf("test2 days:%d\n", Days(t5, t6))
}

打印结果如下,与前面的设想一致。

test1 days:1
test2 days:2
test2 days:3

小结

写此博文只为记录在此以备忘。如能帮到一些小伙伴,那真是莫大的荣幸!如有更好的方式,欢迎小伙伴们留言,我将虚心学习!谢谢!

golang计算任意两个时间点之间所覆盖的天数相关推荐

  1. T-SQL 2 Tips: 1.计算任意两日期之间的周一到周日分别各有几个! 2.根据出生日期计算精确年龄!...

    这两个小技巧,不写不知道,一写吓一跳! 都是看似简单,实际做起来就懵,得仔细想一想,才能写对! 凡是有日期运算的程序都要细心哦! 先说第二个: 2.根据出生日期精确计算年龄!   所谓计算精确年龄就是 ...

  2. js编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数。...

    编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数. <body><input type="text" id="txt"& ...

  3. Python 计算任意两向量之间的夹角

    如图所示,我们要计算任意两个向量之间的夹角. (图中的坐标数字是估计值,随手给定) python代码如下 import math AB = [1,-3,5,-1] CD = [4,1,4.5,4.5] ...

  4. 两个向量之间的夹角公式_Python 计算任意两向量之间的夹角方法

    如图所示,我们要计算任意两个向量之间的夹角. (图中的坐标数字是估计值,随手给定) python代码如下 import math AB = [1,-3,5,-1] CD = [4,1,4.5,4.5] ...

  5. js 编写一个函数,计算任意两个数字之间所能组成的奇数个数

    <!DOCTYPE html> <html> <head><title></title> </head> <body> ...

  6. Java 计算任意两天之间相隔的天数

    在学习了Java中的Date类相关的方法之后,我试着自己写了小程序可以计算任意两天之间相隔的天数,挺好用的. 设计思路: 运用Date类中提供的getTime()方法,获取输入的日期与1990-01- ...

  7. php计算指定日期之间的天数,php计算任意两个日期之间的天数

    /* php计算任意两个日期之间的天数 基本思想,算术减法: cur_date         2009 04 11 last_date   - 2008 12 20 ---------------- ...

  8. python的datetime举例_Python datetime库计算两个时间点之间的分钟(秒、天)数

    计算两个时间点之间的分钟数 import datetime def minNums(startTime, endTime): '''计算两个时间点之间的分钟数''' # 处理格式,加上秒位 start ...

  9. js小练习:编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数

    //编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数(js小白,如有不足,请多多留言哦) //比如: 计算0-3之间能组成的奇数个是01.21.03.13.23.31 // 1- ...

最新文章

  1. 探究C/C++可变参数
  2. UA MATH571B 2K析因设计 SAS实践 分数2k析因设计
  3. Scala声明类及创建类的对象
  4. linux 内核修改rss,linux 内核参数 rss
  5. Forrester 首席分析师对话阿里云容器服务负责人:容器的未来趋势是什么?
  6. Angular之Error: ExpressionChangedAfterItHasBeenChecked
  7. 在线画 有穷状态自动机 的软件_怎么画思维导图?不用下载软件,在线就能操作...
  8. R语言转换并保存json文件--使用jsonlite包
  9. 从编程小白到全栈开发:服务的调用
  10. 9.性能之巅 洞悉系统、企业与云计算 --- 磁盘
  11. google浏览器被360导航劫持
  12. 一文读大厂微服务水平
  13. 基于 dev 分支创建新的分支
  14. 如何应对网站流量暴增
  15. python一行代码实现动态爱心
  16. Win10 打印机共享问题解决实录
  17. 【干货】教你如何下载去水印抖音短视频到手机
  18. shopnc 手机端添加自定义模块
  19. 邦彦技术上市首日跌15%:公司市值37亿 劲牌是二股东
  20. 计算机死机按什么恢复出厂设置,电脑恢复出厂设置的方法

热门文章

  1. 【檀越剑指大厂—SpringCloudAlibaba】SpringCloudAlibaba高阶
  2. 风压和功率计算公式轴流式_带你认识风机中风压、风量、功率与转速的关系!...
  3. 游戏开发43课 移动游戏性能优化2
  4. golang中的信号量的实现原理
  5. Interview之CV:人工智能领域求职岗位—计算机视觉算法工程师的职位简介、薪资介绍、知识结构之详细攻略
  6. 计算机无法识别读卡器怎么办,电脑读卡器读不出来怎么办
  7. 可以测试体育跑步的软件,乐健体育如何跑步作弊?哪些app可以跑步作弊?
  8. python用于日期常用的函数
  9. 边缘计算社区已加入群聊,思否 AIGC Hackathon 扩列
  10. 使用C语言获取指定域名的IP