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