• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解Golang中的各种时间操作

    需求

    时间格式的转换比较麻烦,自己写了个工具,可以通过工具中的这些方法相互调用转成自己想要的格式,代码如下,后续有新的函数再添加

    实现代码

    package utils
    
    import "time"
    
    const (
     TIMEFORMAT = "20060102150405"
     NORMALTIMEFORMAT = "2006-01-02 15:04:05"
    )
    
    // 当前时间
    func GetTime() time.Time{
     return time.Now()
    }
    
    // 格式化为:20060102150405
    func GetTimeString(t time.Time) string {
     return t.Format(TIMEFORMAT)
    }
    
    // 格式化为:2006-01-02 15:04:05
    func GetNormalTimeString(t time.Time) string {
     return t.Format(NORMALTIMEFORMAT)
    }
    
    // 转为时间戳->秒数
    func GetTimeUnix(t time.Time) int64 {
     return t.Unix()
    }
    
    // 转为时间戳->毫秒数
    func GetTimeMills(t time.Time) int64 {
     return t.UnixNano() / 1e6
    }
    
    // 时间戳转时间
    func GetTimeByInt(t1 int64) time.Time{
     return time.Unix(t1,0)
    }
    
    // 字符串转时间
    func GetTimeByString(timestring string) (time.Time,error){
     if timestring == "" {
     return time.Time{},nil
     }
     return time.ParseInLocation(TIMEFORMAT, timestring, time.Local)
    }
    
    // 标准字符串转时间
    func GetTimeByNormalString(timestring string) (time.Time,error){
     if timestring == "" {
     return time.Time{},nil
     }
     return time.ParseInLocation(NORMALTIMEFORMAT, timestring, time.Local)
    }
    
    // 比较两个时间大小
    func CompareTime(t1 ,t2 time.Time) bool {
     return t1.Before(t2)
    }
    
    // n小时后的时间字符串
    func GetNextHourTime(s string, n int64) string {
     t2, _ := time.ParseInLocation(TIMEFORMAT, s, time.Local)
     t1 := t2.Add(time.Hour * time.Duration(n))
     return GetTimeString(t1)
    }
    
    // 计算俩个时间差多少小时
    func GetHourDiffer(start_time, end_time string) float32 {
     var hour float32
     t1, err := time.ParseInLocation(TIMEFORMAT, start_time, time.Local)
     t2, err := time.ParseInLocation(TIMEFORMAT, end_time, time.Local)
     if err == nil  CompareTime(t1,t2) {
     diff := GetTimeUnix(t2) - GetTimeUnix(t1)
     hour = float32(diff) / 3600
     return hour
     }
     return hour
    }
    
    // 判断当前时间是否是整点
    func Checkhours() bool {
     _, m, s := GetTime().Clock()
     if m == s  m == 0  s == 0 {
     return true
     }
     return false
    }
    
    // 时间字符串转为标准字符串
    func StringToNormalString(t string) string {
     if !(len(TIMEFORMAT) == len(t) || len(SHORTTIMESTRING) == len(t)) {
     return t
     }
     if len(SHORTTIMESTRING) == len(t) {
     t += "000000"
     }
     if len(TIMEFORMAT) == len(t) {
     t1,err:= GetTimeByString(t)
     if err != nil {
     return t
     }
     t = GetTimeString(t1)
     }
     return t
    }
    
    

    判断一个时间点是否在一个时间点之后

    过程:这个对于时间戳而言非常简单,但是对于其他的需要转换到time即可对比

      stringToTime, _ := time.Parse("2006-01-02 15:04:05", "2017-12-12 12:00:00")
      beforeOrAfter := stringToTime.After(time.Now())
      if beforeOrAfter == true {
        fmt.Println("2017-12-12 12:00:00在tNow之后!")
      } else {
        fmt.Println("2017-12-12 12:00:00在tNow之前!")
      }
    

    判断一个时间相比另外一个时间点过去了多久
    过程:这个是用Time的方式来对比

      beginTime :=time.Now()
      time.Sleep(time.Second*1)
      durtime:= time.Since(beginTime)
      fmt.Println("离现在过去了:",durtime)

    到此这篇关于详解Golang中的各种时间操作的文章就介绍到这了,更多相关Golang 时间操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • golang日志框架之logrus的使用
    • logrus日志自定义格式操作
    上一篇:golang jwt+token验证的实现
    下一篇:golang 两个go程轮流打印一个切片的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    详解Golang中的各种时间操作 详解,Golang,中的,各种,时间,