2011-12-06 68 views
0

我有一個去這樣的程序,格式化圍棋

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

這看起來像一個很糟糕的問題。你應該從右邊開始計數,而不是從左邊算起。 – peterSO

回答

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

從7提取數字以12很容易,串片會做的伎倆:

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

,所以你得到它。

3

例如,

package main 

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

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

該算法通過從右側13計數隔離數字8。對於19位數的整數,這相當於從左數起的7到12位的數字。對於19位數字1323154238948677000,這些都是數字423894.

func Nanoseconds

FUNC納秒()的int64

納秒報告自Unix紀元納秒的數量, 1970年1月1日00 :UTC時間00:00。

在某個時間點,納秒數將從19位增加到20位有效數字。因此,從左邊切下有效數字的算法(例如[6:12])是錯誤的。