如何通过Go语言将UTC和GMT时间处理为标准北京时间?

wx6084d152d85c2 · · 3098 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在EasyCVR视频智能安防监控系统的视频录像项目中,经常需要调用根据开始时间和结束时间获取摄像头的录像,因此对于时间上的处理就要特别注意。

 

bef4400cbc05de35bf684369d9db10ed.gif

在编译EasyCVR视频智能安防监控系统过程中,我们需要将不同的时间标准都转化为北京时间,便于符合我们在实际项目场景中使用。

时间的标准有好几种,需要注意下,常用的是UTC和GMT。UTC时间的全称是Universal Time Coordinated(协调世界时),世界标准时间,根据原子钟计算出来的时间。GMT时间,Greenwich Mean Time(格林尼治平均时),GMT是以前的时间标准,根据英国天文台观测得出的时间,表示时区。

 

bef4400cbc05de35bf684369d9db10ed.gif

UTC时间相对于GMT时间来说,误差更小,但是更多的时间会忽略不计误差,简单可以理解为两者UTC = GMT + 0。

中国位于的是东八区,因此对于GMT和UTC的时间,则需要转换成本地时间,即中国时间 = GMT + 8 小时。

// 根据 GMT 字符串获取对应的时间
func GetGmtTime(secStr string) (*time.Time, error) {
   // 25 Feb 2021 02:23:17 GMT
   formatTimeStr := "02 Jan 2006 15:04:05 GMT"
   start, err := time.Parse(formatTimeStr, secStr)
   if err == nil {
      realTime := start.Add(8*time.Hour)
      return &realTime, nil
   } else {
      return nil, err
   }
}

以上程序为,如果是GMT时间则 Add(8*time.Hour) 生成准确的北京时间。该方法在TSINGSEE青犀视频的视频智能安防监控系统中都可以参考使用。当然,如果大家发现了其他关于平台上时间显示或者时区错误的问题,也可以联系我们协助排查。

 


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:wx6084d152d85c2

查看原文:如何通过Go语言将UTC和GMT时间处理为标准北京时间?

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3098 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传