我正在从python移植代码,并有一个函数,它接受一个格式化字符串和等效的日期时间字符串,并创建一个日期时间对象:
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
我怀疑这是由于日期时间字符串中添加了非日期编号("06"(。有可能创建一个可以创建时间的函数吗。时间对象,该对象使用内置时间给定任意格式的字符串和日期时间字符串表示形式。解析函数?如果没有,是否有任何第三方解决方案可以工作?
我怀疑这是显而易见的,但现在。。。
剥去它:
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