@@ -99,22 +99,28 @@ func TibiaDataDateV3(date string) string {
9999
100100 // var time parser
101101 var tmpDate time.Time
102+ var err error
102103
103- // parsing and setting format of return
104- switch dateLength := len (date ); {
105- case dateLength == 5 :
106- // date that contains special formatting only used in date a world was created
107- tmpDate , _ = time .Parse ("01/06" , date )
108- // we need to return earlier as well, since we don't have the day
109- return tmpDate .UTC ().Format ("2006-01" )
110- case dateLength == 11 :
111- // dates that contain first 3 letters in month
112- tmpDate , _ = time .Parse ("Jan 02 2006" , date )
113- case dateLength > 11 :
114- // dates that contain month fully written
115- tmpDate , _ = time .Parse ("January 2 2006" , date )
116- default :
117- log .Printf ("Weird format detected: %s" , date )
104+ // date formats to parse
105+ dateFormats := map [string ][]string {
106+ "YearMonthDay" : {"January 2 2006" , "Jan 02 2006" },
107+ "YearMonth" : {"January 2006" , "Jan 2006" , "2006-01" , "01/06" },
108+ }
109+
110+ for _ , layout := range dateFormats ["YearMonthDay" ] {
111+ tmpDate , err = time .Parse (layout , date )
112+ if err == nil {
113+ // If the parse succeeds, format the date as "2006-01-02"
114+ return tmpDate .UTC ().Format ("2006-01-02" )
115+ }
116+ }
117+
118+ for _ , layout := range dateFormats ["YearMonth" ] {
119+ tmpDate , err = time .Parse (layout , date )
120+ if err == nil {
121+ // If the parse succeeds, format the date as "2006-01"
122+ return tmpDate .Format ("2006-01" )
123+ }
118124 }
119125
120126 return tmpDate .UTC ().Format ("2006-01-02" )
0 commit comments