From 5acdd7f8b779fbbe2e0c613ac58c90ccbda30cb6 Mon Sep 17 00:00:00 2001 From: douxu <921247973@qq.com> Date: Tue, 13 Aug 2024 16:17:10 +0800 Subject: [PATCH] modify coslight time parse layout --- wave_record/go-comtrade/config_parse.go | 18 +++++++++++++----- wave_record/go-comtrade/types.go | 4 +++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/wave_record/go-comtrade/config_parse.go b/wave_record/go-comtrade/config_parse.go index 905c07e..b54735d 100644 --- a/wave_record/go-comtrade/config_parse.go +++ b/wave_record/go-comtrade/config_parse.go @@ -198,11 +198,19 @@ func ParseComtradeCfg(filePath string) (*ComtradeCfg, error) { } line += uint32(comtradeCfg.Nrates) + // init comtrade config time parse layout + timeParseLayout := DateTimeLayout + firstDataTimeStr := ByteToString(lines[line+comtradeCfg.Total]) + if len(firstDataTimeStr) < DefaultTimeLayoutLen { + timeParseLayout = CosLightDateTimeLayout + } + // read first data time (dd/mm/yyyy,hh:mm:ss.ssssss) - if start, err := time.Parse(DateTimeLayout, ByteToString(lines[line+comtradeCfg.Total])); err != nil { + if start, err := time.Parse(timeParseLayout, firstDataTimeStr); err != nil { if strings.Contains(err.Error(), MonthOutOfRange) { + timeParseLayout = DateTimeLayout2 // try to parse date reverse month and day: mm/dd/yyyy - if start, err = time.Parse(DateTimeLayout2, ByteToString(lines[line+comtradeCfg.Total])); err != nil { + if start, err = time.Parse(timeParseLayout, firstDataTimeStr); err != nil { return nil, err } else { comtradeCfg.FirstDataTime = start @@ -218,11 +226,11 @@ func ParseComtradeCfg(filePath string) (*ComtradeCfg, error) { } // read trigger time (dd/mm/yyyy,hh:mm:ss.ssssss) - tempList = bytes.Split(lines[line+comtradeCfg.Total], []byte(",")) - if trigger, err := time.Parse(DateTimeLayout, ByteToString(bytes.Join(tempList, []byte(",")))); err != nil { + triggerTimeStr := ByteToString(lines[line+comtradeCfg.Total]) + if trigger, err := time.Parse(timeParseLayout, triggerTimeStr); err != nil { if strings.Contains(err.Error(), MonthOutOfRange) { // try to parse date reverse month and day - if trigger, err = time.Parse(DateTimeLayout2, ByteToString(bytes.Join(tempList, []byte(",")))); err != nil { + if trigger, err = time.Parse(timeParseLayout, triggerTimeStr); err != nil { return nil, err } else { comtradeCfg.TriggerTime = trigger diff --git a/wave_record/go-comtrade/types.go b/wave_record/go-comtrade/types.go index e14f483..7521875 100644 --- a/wave_record/go-comtrade/types.go +++ b/wave_record/go-comtrade/types.go @@ -1,12 +1,14 @@ package comtrade const ( + // define len of dd/mm/yyyy,HH:MM:SS.mmmmmm style + DefaultTimeLayoutLen = 26 // dd/mm/yyyy,HH:MM:SS.mmmmmm DateTimeLayout = "02/01/2006,15:04:05.000000" // mm/dd/yyyy,HH:MM:SS.mmmmmm DateTimeLayout2 = "01/02/2006,15:04:05.000000" // mm/dd/yyyy,HH:MM:SS.mmm - CosLightDateTimeLayout = "01/02/2006,15:04:05.000" + CosLightDateTimeLayout = "02/01/2006,15:04:05.000" Rcv1991 = 1991 Rcv1999 = 1999