3 回答

TA貢獻1744條經驗 獲得超4個贊
要在毫秒之前刪除點,請使用方法 。請找到具有以下具有相同邏輯的代碼。strings.Replace()
package main
import (
"fmt"
"strings"
"time"
)
func main() {
format := "2006_01_02_15_04_05_.000"
fmt.Println(time.Now().Format(format))
fmt.Println(strings.Replace(time.Now().Format(format), "_.", "_", 1))
}
輸出:
2009_11_10_23_00_00_.000
2009_11_10_23_00_00_000

TA貢獻2019條經驗 獲得超9個贊
do函數有效地從格式中刪除(點)。.
根據格式的約定,小數點后跟一個或多個零表示小數秒,打印到給定的小數位數。因此,使用相同的方法是安全的(例如。 而不是 )。.000.999
該函數執行一些健全性檢查,以便格式無效。do
package main
import (
"errors"
"fmt"
"os"
"strings"
"time"
)
// do replaces the dot (.) with underscore (_) safely
func do(t string) (string, error) {
// size is the expected length of the string
const size = 24
if tLen := len(t); tLen != size {
return "",
fmt.Errorf(
"invalid format size: expected %d, got %d", size, tLen,
)
}
if t[size-4] != '.' {
return "", errors.New("invalid format")
}
// Use strings.Builder for concatenation
sb := strings.Builder{}
sb.Grow(size)
// For: "2006_01_02_15_04_05_.000"
// Join "2006_01_02_15_04_05_" and "000"
sb.WriteString(t[0 : size-4])
sb.WriteString(t[size-3 : size])
return sb.String(), nil
}
func main() {
format := "2006_01_02_15_04_05_.000"
t, err := do(time.Now().Format(format))
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
fmt.Println(t)
}
- 3 回答
- 0 關注
- 106 瀏覽
添加回答
舉報