modify coslight time parse layout

This commit is contained in:
douxu 2024-08-13 16:17:10 +08:00
parent 64ea68b47c
commit 5acdd7f8b7
2 changed files with 16 additions and 6 deletions

View File

@ -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

View File

@ -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