Q1. Как создать golang time struct из наносекундной метки времени?Время начиная с golang nanosecond timestamp
Q2. Как вычислить количество часов с этой отметки времени?
Q1. Как создать golang time struct из наносекундной метки времени?Время начиная с golang nanosecond timestamp
Q2. Как вычислить количество часов с этой отметки времени?
В Go объект "время" представлен значением типа структуры time.Time
.
Вы можете создать Time
из наносекундной временной метки с помощью функции time.Unix(sec int64, nsec int64)
, где она действительна передать nsec
за пределы диапазона [0, 999999999]
.
И вы можете использовать функцию time.Since(t Time)
, которая возвращает прошедшее время с указанного времени как time.Duration
(что в основном представляет собой разницу во времени в наносекундах).
t := time.Unix(0, yourTimestamp)
elapsed := time.Since(t)
Чтобы получить прошедшее время в часах, просто использовать Duration.Hours()
метод, который возвращает продолжительность в часах в виде числа с плавающей точкой:
fmt.Printf("Elapsed time: %.2f hours", elapsed.Hours())
Попробуйте его на Go Playground.
Примечание:
Duration
может форматировать себя разумно в таком формате, как "72h3m0.5s"
, реализованного в String()
метода:
fmt.Printf("Elapsed time: %s", elapsed)
Вы пройти наносекунд до time.Unix(0, ts)
, например:
func main() {
now := time.Now()
ts := int64(1257856852039812612)
timeFromTS := time.Unix(0, ts)
diff := now.Sub(timeFromTS)
fmt.Printf("now: %v\ntime from ts: %v\ndiff: %v\ndiff int:", now, timeFromTS, diff, int64(diff))
}
Чтобы сохранить некоторую погуглите, макс time.UnixNano() является: '2262 -04-11 23: 47: 16.854775807 +0000 UTC' – Highstead