今天获得UTC时间的最佳方式是golang中的分钟时间

时间:2017-01-29 08:15:05

标签: optimization go time system-calls

我有几分钟的时间(即小时* 60 +分钟)作为输入,需要将其转换为time.Time这是我尝试做同样的事情。

示例

Input: 780
Output : 2017-01-29 13:00:51.992871217 +0000 UTC

代码

func MinutesToTime(minutes int) time.Time {
          t := time.Now().UTC() //may be cached  
          h, m, _ := t.Clock()
          diff := minutes - (h*60 + m)
          t = t.Add(time.Duration(diff) * time.Minute)
          return t
}

  1. 是否有任何time包暴露的功能可能会有所帮助 我优化了这个
  2. 我应该直接使用gettimeofday()系统调用
  3. 尝试实施vDSO是一种矫枉过正,只有amd64的vDSO实现可以在go source code
  4. 中找到

    PS 59秒错误是可以接受的,因为分钟是我的最低粒度

1 个答案:

答案 0 :(得分:1)

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Print(MinutesToTime(780).UTC())
}

func MinutesToTime(m int64) time.Time {
    return time.Unix(time.Now().Unix()/86400*86400+m*60, 0)
}

% go run test.go                                                                                                         
2017-01-29 13:00:00 +0000 UTC%