go - Parsing a time with the format HHMMSS00 -
i'm working data multiple sources , 1 of these sources sage erp system.
i trying reference 2 files in sage in particular, audit date , audit time (audtdate , audttime).
i need parse , store datetime in microsoft sql server database.
currently, trying figure out best way parse this.
an example of data might below:
+----------+----------+ | audtdate | audttime | +----------+----------+ | 20170228 | 5013756 | +----------+----------+ audtdate yyyymmdd format , audttime hhmmss00.
so tried below test:
func main() { value := "20170228 5013756" layout := "20060102 15040500" t, _ := time.parse(layout, value) fmt.println(t) } this doesn't work, returns 0001-01-01 00:00:00 +0000 utc when run.
if change time 050137 , layout 150405 works fine:
func main() { value := "20170228 050137" layout := "20060102 150405" t, _ := time.parse(layout, value) fmt.println(t) } one way can think of deal strip milliseconds off end , check length , add 0 beginning if needs one.
this seems pretty ugly solution , involve doing this:
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] } is there way without going through above? perhaps natively time package?
assuming you're pulling 2 separate values db, can use fmt.sprintf 0 pad timestring. combining date string, can use following:
value := fmt.sprintf("%s %08s", date, timestring)[:15] in code:
func main() { date := "20170228" timestring := "5013756" value := fmt.sprintf("%s %08s", date, timestring)[:15] layout := "20060102 150405" t, _ := time.parse(layout, value) fmt.println(t) } results:
2017-02-28 05:01:37 +0000 utc this approach useful because correctly pad shorter value of time, e.g. 13756 converted 00013756.
the fmt.sprintf function useful format arguments string using formatting desire specified format string , list of arguments (...interface{}). format string tells function how render arguments.
this format string uses 2 items of note:
- string verb (
%s): format string uses variety ofverbsused string substitutions.%srender string or slice. other popular verbs include%dbase 10 integer ,%ffloat complete list in docs.%vverb useful can used here render argument's default value. 0left padding:0left pad argument, use0followed length number in verb after%. prepended argument maximum number of0s specified in length number. example,%08srender string 8 prepended zeros. means string"""00000000"while string"1234567"result in"01234567". if string longer length, nothing prepended.
from documentation:
%s uninterpreted bytes of string or slice 0 pad leading zeros rather spaces; numbers, moves padding after sign more detailed available in documentation: https://golang.org/pkg/fmt/
wiki
Comments
Post a Comment