Golang中将纳秒时长转换为小时、分钟、秒和纳秒的方法

Golang中将纳秒时长转换为小时、分钟、秒和纳秒的方法 你好,有没有一种快速的方法将纳秒时长转换为 hh:mm:ss.fffffffff 格式?

问候

5 回复

完美!

更多关于Golang中将纳秒时长转换为小时、分钟、秒和纳秒的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我认为这是你需要的:

	t := time.Unix(0, 1257567890000000000 //纳秒)
	elapsed := time.Since(t)

	fmt.Printf("经过的时间: %s\n", elapsed)

摘自: https://stackoverflow.com/a/28760695

Albeldo:

time.Since(t)

time.Since(t) 不是返回从时间点 t 到现在的持续时间吗?如果我将 1257567890000000000 转换为持续时间 d := time.Duration(1257567890000000000) 并用 fmt.Println(d) 打印,会得到 349324h24m50s

d := time.Duration(1257567890000000000)
fmt.Println(d)

您也可以使用基于int64纳秒的time.Duration类型(https://golang.org/pkg/time/#Duration)。然后可以通过除以time.Hour(一小时的纳秒数常量)将其转换为小时。得到小时数后,可以从持续时间中减去小时数*time.Hour,然后对分钟执行相同操作。最后将剩余秒数转换为浮点数并除以time.Seconds。随后您可以使用fmt.Sprintf("%02d:%02:%02f", hours, minutes, seconds)格式化输出。

func main() {
    fmt.Println("hello world")
}

在Go语言中,可以使用标准库的time.Duration类型来轻松处理纳秒时长的转换和格式化。以下是一个示例,展示如何将纳秒转换为hh:mm:ss.fffffffff格式:

package main

import (
    "fmt"
    "time"
)

func formatDuration(ns int64) string {
    // 将纳秒转换为 time.Duration
    d := time.Duration(ns)
    
    // 提取小时、分钟、秒和纳秒部分
    hours := int(d.Hours())
    minutes := int(d.Minutes()) % 60
    seconds := int(d.Seconds()) % 60
    nanoseconds := int(d.Nanoseconds()) % 1e9
    
    // 格式化为 hh:mm:ss.fffffffff
    return fmt.Sprintf("%02d:%02d:%02d.%09d", hours, minutes, seconds, nanoseconds)
}

func main() {
    // 示例:将 1234567890123 纳秒转换为 hh:mm:ss.fffffffff
    ns := int64(1234567890123)
    formatted := formatDuration(ns)
    fmt.Printf("纳秒 %d 转换为: %s\n", ns, formatted)
}

运行此代码将输出:纳秒 1234567890123 转换为: 00:20:34.567890123

解释:

  • time.Duration(ns) 将纳秒值转换为 time.Duration 类型。
  • d.Hours()d.Minutes()d.Seconds() 方法返回浮点数,通过取整和取模运算提取整数部分。
  • 纳秒部分通过 d.Nanoseconds() % 1e9 计算,确保只保留小数部分的纳秒。
  • fmt.Sprintf 使用 %02d%09d 格式化字符串,确保各部分有固定宽度(例如,小时、分钟和秒为两位,纳秒为九位)。

这种方法高效且直接,适用于任何纳秒时长的转换。

回到顶部