optimization - 给定今天的时间,以 golang 中的分钟数获取 UTC 时间的最佳方式

标签 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 中找到

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

最佳答案

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% 

关于optimization - 给定今天的时间,以 golang 中的分钟数获取 UTC 时间的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918897/

相关文章:

.net - [垃圾收集] dotTrace Performance Profiler 是什么意思?

php - MySQL fulltext/regexp/levenshtein 搜索优化

go - 使用 "go list"如何仅列出二进制文件中使用的 Go 模块?

go - 将接口(interface)方法的参数限制为一些允许的结构?

java - Gurobi 无法设置或打印(手动)变量值

optimization - 在 Go (golang) 中嵌入结构化数据

http - Go 中的简单 HTTP POST 文件上传

asp.net - 为什么 Time.strptime() 返回当前日期?

javascript - 什么是好的 Javascript 时间选择器?

PHP 将时间戳转换为月份和日期