package replication import ( "fmt" "strings" "time" ) var ( fracTimeFormat []string ) // fracTime is a help structure wrapping Golang Time. type fracTime struct { time.Time // Dec must in [0, 6] Dec int timestampStringLocation *time.Location } func (t fracTime) String() string { tt := t.Time if t.timestampStringLocation != nil { tt = tt.In(t.timestampStringLocation) } return tt.Format(fracTimeFormat[t.Dec]) } func formatZeroTime(frac int, dec int) string { if dec == 0 { return "0000-00-00 00:00:00" } s := fmt.Sprintf("0000-00-00 00:00:00.%06d", frac) // dec must < 6, if frac is 924000, but dec is 3, we must output 924 here. return s[0 : len(s)-(6-dec)] } func init() { fracTimeFormat = make([]string, 7) fracTimeFormat[0] = "2006-01-02 15:04:05" for i := 1; i <= 6; i++ { fracTimeFormat[i] = fmt.Sprintf("2006-01-02 15:04:05.%s", strings.Repeat("0", i)) } }