我正在处理来自多个来源的一些数据,其中一个来源是 Sage ERP 系统。
我试图特别引用 Sage 中的两个文件,一个审计日期和审计时间(AUDTDATE
和AUDTTIME
)。
我需要对其进行解析并将其作为 DATETIME 存储在 Microsoft SQL Server 数据库中。
目前,我只是想找出解析这个的最佳方法。
数据可能如下所示的示例:
+----------+----------+
| AUDTDATE | AUDTTIME |
+----------+----------+
| 20170228 | 5013756 |
+----------+----------+
AUDTDATE
是 yyyymmdd 格式,AUDTTIME
是 HHMMSS00。
所以我尝试了以下作为测试:
func main() {
value := "20170228 5013756"
layout := "20060102 15040500"
t, _ := time.Parse(layout, value)
fmt.Println(t)
}
这不起作用,它只是0001-01-01 00:00:00 +0000 UTC
在运行时返回。
如果我将时间更改为此050137
并将布局更改为,150405
那么这可以正常工作:
func main() {
value := "20170228 050137"
layout := "20060102 150405"
t, _ := time.Parse(layout, value)
fmt.Println(t)
}
我能想到的一种处理方法是从末尾去掉毫秒,然后检查长度,如果需要,在开头添加一个零。
这似乎是一个非常丑陋的解决方案,并且需要执行以下操作:
func main() {
date := "20170228"
timeString := "5013756"
value := date + prepareTime(timeString)
layout := "20060102150405"
t, _ := time.Parse(layout, value)
fmt.Println(t)
}
func prepareTime(time string) string {
if len(time) == 7 {
time = "0" + time
}
return time[:6]
}
有没有办法在不经历上述情况的情况下做到这一点?也许本机与时间包?