安防视频平台系统利用Go语言实现时间转换的过程【附代码】

举报
TSINGSEE青犀视频 发表于 2021/10/25 16:27:31 2021/10/25
【摘要】 在很多实际业务中,需要大量处理视频或者分析结果的时间日期时区数据。我们多用golang来进行编译和开发,因此本文分享一下我们使用go中需要的各种日期和时间的转换。

在我们开发视频平台智能分析功能的过程中,系统的时间因素也是需要注意的。在很多实际业务中,需要大量处理视频或者分析结果的时间日期时区数据。我们多用golang来进行编译和开发,因此本文分享一下我们使用go中需要的各种日期和时间的转换。

1、毫秒转go time.Time类型;注意把毫秒转成纳秒,在转成go time.Time,这样就能取到年月日时分秒

func MsToTime(ms int64) time.Time {
	tm := time.Unix(0, ms*int64(time.Millisecond))
	//fmt.Println(tm.Format("2006-02-01 15:04:05.000"))
	return tm
}

2、毫秒转成时间格式,如转:2021-14-14 14:00:00格式;需要注意的是必须为这个参数(”2006-02-01 15:04:05”)

func MsToTimeStr(ms int64) string {
	t := MsToTime(ms)
	return t.Format("2006-02-01 15:04:05")
}

3、把字符串日期(如:2021-14-14 14:00:00)格式转换成毫秒:

func ParseTimeStrToTimestamp(timeStr string, flag int) int64 {
	var t int64
	loc, _ := time.LoadLocation("Local")//此处必须要,不然转换有问题
	if flag == 1 {
		t1, _ := time.ParseInLocation("2006.01.02 15:04:05", timeStr, loc)
		t = t1.UnixNano() / 1e6
	} else if flag == 2 {
		t1, _ := time.ParseInLocation("2006-01-02 15:04", timeStr, loc)
		t = t1.UnixNano() / 1e6
	} else if flag == 3 {
		t1, _ := time.ParseInLocation("2006-01-02", timeStr, loc)
		t = t1.UnixNano() / 1e6
	} else if flag == 4 {
		t1, _ := time.ParseInLocation("2006.01.02", timeStr, loc)
		t = t1.UnixNano() / 1e6
	} else {
		t1, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr, loc)
		t = t1.UnixNano() / 1e6
	}
	return t
}

4、获取前一天的日期算法:

//day参数为负数
func GetLastYMDH(day int) (y, m, d, h int, timestamp int64) {
	now := GetCurrentNow()
	tomorrow := now.AddDate(0, 0, day)
	//lastTime := GetCurrentMillisecond() + day * 24 * 60 * 60 * 1000
	//t := MsToTime(lastTime)
	//Y := t.Year()
	//M := t.Month()
	//D := t.Day()
	//H := t.Hour()
	Y := tomorrow.Year()
	M := tomorrow.Month()
	D := tomorrow.Day()
	H := tomorrow.Hour()
	timestamp = tomorrow.UnixNano() / 1e6 //转毫秒
	return Y, int(M), D, H, timestamp
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。