为了账号安全,请及时绑定邮箱和手机立即绑定

如何及时删除毫秒值中的点。格式

如何及时删除毫秒值中的点。格式

Go
慕村225694 2022-09-05 18:01:55
我想在 Go 中使用时间生成具有此特定格式的时间。格式化功能:yyyy_MM_dd_HH_mm_ss_SSS    // SSS == milliseconds按照文档,我到达了这一点(使用stdFracSecond0):format := "2006_01_02_15_04_05_.000" fmt.Println(time.Now().Format(format))哪些输出:2021_06_18_10_21_19_.179如何删除毫秒值之前的点?这不起作用(毫微始终为零):format := "2006_01_02_15_04_05_000"游乐场示例
查看完整描述

3 回答

?
慕无忌1623718

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


查看完整回答
反对 回复 2022-09-05
?
慕沐林林

TA贡献2016条经验 获得超9个赞

只需使用从格式化的时间字符串中删除即可。strings.Replace().

strings.Replace(time.Now().Format(format), `.`, ``, 1)

在这里运行


查看完整回答
反对 回复 2022-09-05
?
慕少森

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)

}


查看完整回答
反对 回复 2022-09-05
  • 3 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信