我正在从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对象的函数?如果没有,是否有任何第三方解决方案可以解决?
答案 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
}