Go中格式化时间

时间:2011-12-06 04:47:30

标签: go

我有这样的go程序,

package main

import "fmt"
import "time"

func main() {
s := strconv.Itoa64(time.Nanoseconds())
fmt.Println(s)
}

这里,在我的系统中,输出是19位纳秒。现在,我希望在这些纳秒之后的7到12之间得到数字。任何人都可以帮助Go中的可行方式吗?

注意:我想要7到12之间的数字,因为在我的系统中,它们之间的时间不同意味着其他数字是相同的,所以对我来说不需要。 并不需要在println中进行格式化,因为我举例来说明我的代码。实际上,我会将格式化的时间用于其他目的。我需要它在s:=。

3 个答案:

答案 0 :(得分:3)

例如,

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    s := strconv.Itoa64(time.Nanoseconds() / 1e7 % 1e6)
    fmt.Println(s)
}

此算法隔离从右侧开始计数的数字8到13。对于19位整数,这相当于从左侧开始计数的数字7到12。对于19位数字1323154238948677000,这些是数字423894。

  

func Nanoseconds

     

func Nanoseconds()int64

     

Nanoseconds报告自Unix纪元以来的纳秒数,   1970年1月1日00:00:00 UTC。

在某个时间点,纳秒数将从19位增加到20位有效数字。因此,从左侧切分有效数字的算法,例如[6:12],是错误的。

答案 1 :(得分:1)

从7到12提取数字很容易,字符串切片可以解决问题:

s := strconv.Itoa64(time.Nanoseconds())
fmt.Println(s[6:12])

所以你明白了。

答案 2 :(得分:0)

s := strconv.Itoa64(time.Nanoseconds())[6:12]