Golang time.Parse()格式化为非时间数字

时间:2018-11-27 18:45:53

标签: go time strptime

我正在从python移植代码,并具有一个接受格式字符串和等效datetime字符串并创建datetime对象的函数:

import datetime
def retrieve_object(file_name, fmt_string):
    datetime = datetime.strptime(file_name, fmt_string)
    // Do additional datetime calculations here

我尝试在Go中创建等效功能:

import(
    "time"
)

func retrieve_object(file_name string, fmt_string string) {
    time_out, _ := time.Parse(fmt_string, file_name)  
    // Do additional time.Time calculations here

这可以解析时间。在这种情况下,时间正确:

file_name := "KICT20170307_000422" 
fmt_string := "KICT20060102_150405"
// returns 2017-03-07 00:04:22 +0000 UTC

但是在这种情况下无法正确解析:

file_name := "KICT20170307_000422_V06.nc" 
fmt_string := "KICT20060102_150405_V06.nc"
// returns 2006-03-07 00:04:22 +0000 UTC

我怀疑这是由于datetime字符串中的其他非日期数字(“ 06”)引起的。是否有可能使用内置的time.Parse函数创建可以给定格式字符串和日期时间字符串表示形式的time.Time对象的函数?如果没有,是否有任何第三方解决方案可以解决?

1 个答案:

答案 0 :(得分:1)

我怀疑这很明显,但是在这里...

只需将其剥离:

func removeSuffix(s string) (string, error) {
    i := strings.LastIndexByte(s, '_')

    if i < 0 {
         return "", fmt.Errorf("invalid input")
    }

    runes := []rune(s)

    result := runes[0:i]

    return string(result), nil
}

这里是游乐场 https://play.golang.org/p/JbHt4Png-eT