gpt4 book ai didi

go - 如何在Golang中使用下划线解析时间戳

转载 作者:行者123 更新时间:2023-12-03 10:09:02 25 4
gpt4 key购买 nike

我正在尝试根据Golang规范解析Filebeat中的访问日志时间戳,例如“2020/11/06_18:17:25_455”。
这是我的验证布局的测试程序:

package main

import (
"fmt"
"log"
"time"
)

func main() {

eventDateLayout := "2006/01/02_15:04:05_000"

eventCheckDate, err := time.Parse(eventDateLayout, "2020/11/06_18:17:25_455")
if err != nil {
log.Fatal(err)
}

fmt.Println(eventCheckDate)

}
结果:

2009/11/10 23:00:00 parsing time "2020/11/06_18:17:25_455" as"2006/01/02_15:04:05_000": cannot parse "455" as "_000"


据我了解,下划线在Golang中具有特殊的含义,但是从文档中尚不清楚如何对其进行转义。
有什么想法吗?

最佳答案

似乎无法在时间布局中使用任何转义字符(例如"\\_"不起作用),因此必须做一些不同的事情。
This issue描述了相同的问题,但是它以非常普通的方式解决,似乎不适用于您的格式。
因此,您最好的选择似乎是将_替换为其他内容/将其从字符串中剥离,然后使用没有它的布局。为了确保也解析了毫秒部分,必须用.而不是_分隔毫秒,然后将其识别为秒(05)格式的一部分。

eventDateLayout := "2006/01/02.15:04:05"

val := strings.Replace("2020/11/06_18:17:25_455", "_", ".", 2)

eventCheckDate, err := time.Parse(eventDateLayout, val)
if err != nil {
panic(err)
}
fmt.Println(eventCheckDate)
Playground link

关于go - 如何在Golang中使用下划线解析时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64732544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com