2017-01-29 17 views
1

У меня есть время того же дня в минутах (т.е. часы * 60 + минуты) в качестве входных данных, необходимо преобразовать его в time.Time, вот моя попытка сделать тоже самое .Оптимальный способ получить время в UTC, учитывая сегодняшнее время как минут в golang

Пример

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. Would пытается реализовать vDSO быть избыточна, реализация vDSO только для amd64 находится в go source code

PS 59-сек эээ приемлема, минута моя низкая зернистость

+0

вам нужен, 51.992871217 часть? – YOU

+0

Нет, поскольку мой ввод находится в минутах +/- 59 секунд в порядке –

ответ

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% 
+0

Вы также можете прокомментировать часть vDSO –

+0

@Sarathsp, извините, не знаю, что такое vDSO. – YOU

+0

спасибо, что ответ выглядит идеально, принял его –

 Смежные вопросы

  • Нет связанных вопросов^_^