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 关注
- 74 浏览
添加回答
举报