【技巧】TSINGSEE青犀视智能视频平台人脸识别中如何利用GO time包实现时间增减


随着人工智能技术不断融入社会的各个领域,智能化的应用已经成为行业的发展趋势。TSINGSEE青犀视频从去年开始也一直积极研发人工智能技术与视频平台的深度融合与应用,包括人脸检测、人脸识别、车牌识别等等,今天我们来分享一个开发技巧:如何利用GO time包实现时间增减。

人脸识别在匹配到人脸后存入数据库,在首页需要进行数据展示。展示的人流量数据需要根据时间进行统计,此时就需要计算每天开始时间、结束时间等时间信息,而Go语言标准包里有time包可以帮我们实现功能需求。

 

time包里的Date函数返回给定位置的相应区域中,可精确到纳秒对应的时间。

例如:

获取今日开始时间:

```
time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 0, 0, 0, 0, time.Local)
```

返回:2022-03-23 00:00:00 +0800 CST

获取这个月开始时间:

```
time.Date(time.Now().Year(), time.Now().Month(), 1, 0, 0, 0, 0, time.Local)
```

返回:2022-03-01 00:00:00 +0800 CST

而对于时间的加减计算可以使用time包里的Add 、AddDate和ParseDuration函数:


首先需要使用ParseDuration函数,获取到想要加上或者减去的时间。

例如获取上个月的结束时间,操作流程如下:

首先获取这个月的开始时间:

```
startTime := time.Date(time.Now().Year(), time.Now().Month(), 1, 0, 0, 0, 0, time.Local)
```

这个月开始时间减去一秒就是上个月的结束时间:

```
startTime.Add(time.ParseDuration("-1s"))
```

返回:2022-02-28 23:59:59 +0800 CST

ParseDuration函数最大的时间单位只能解析到小时,如果想要计算几天前、几个月前甚至几年前,使用AddDate函数则更为方便。AddDate对应的三个参数分别为年、月、日,只需要传入想要计算多久之前/之后的具体数字就可以获取到对应的时间。

例如获取上个月的开始时间,操作流程如下:

首先获取这个月的开始时间

```
startTime := time.Date(time.Now().Year(), time.Now().Month(), 1, 0, 0, 0, 0, time.Local)
```

这个月开始时间减去一个月就是上个月开始时间。

```
startTime.AddDate(0, -1, 0)
```

返回:2022-02-01 00:00:00 +0800 CST

人工智能技术重要性越来越凸显,在监控视频技术中融入AI智能应用也已经成为安防相关企业的重要发展战略。我们除了在平台端拓展AI智能检测分析技术之外,也积极研发了基于边缘AI的硬件设备–AI安全生产摄像机。AI摄像机采用了全新嵌入式多算法框架软件,内置多种AI算法,企业可根据摄像头配置选择算法,支持安全帽检测、烟火检测、室内通道堵塞检测、离岗睡岗检测、人员入侵检测、周界入侵检测、室外消防通道占压检测等,在企业安全生产监管中具有重要意义。