我有这样的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:=。
答案 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()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]