@@ -74,7 +74,7 @@ public class DateParserTests
74
74
"Sun, 08 Dec 1991 09:11:00 +0000" ,
75
75
"Sun, 08 Dec 1991 09:11:00 +0000" ,
76
76
"Thu, 26 Dec 1991 20:45:00 +0000" ,
77
- "Tue, 09 Jun 1992 03:45:24 +0000 " ,
77
+ "Tue, 09 Jun 1992 03:45:24 +0900 " ,
78
78
"Mon, 17 Jan 1994 11:14:55 -0500" ,
79
79
"Wed, 17 Jan 2001 11:14:55 -0500" ,
80
80
"Tue, 30 Mar 2004 13:01:38 +0000" ,
@@ -154,5 +154,69 @@ public void TestParseInvalidDates ()
154
154
Assert . That ( DateUtils . TryParse ( invalidDates [ i ] , out _ ) , Is . False , $ "Should not have parsed '{ invalidDates [ i ] } '") ;
155
155
}
156
156
}
157
+
158
+ [ TestCase ( "Wed, 1 Jan 2025 09:00:00 -0500" , 1 ) ]
159
+ [ TestCase ( "Sat, 1 Feb 2025 09:00:00 -0500" , 2 ) ]
160
+ [ TestCase ( "Sat, 1 Mar 2025 09:00:00 -0500" , 3 ) ]
161
+ [ TestCase ( "Tue, 1 Apr 2025 09:00:00 -0500" , 4 ) ]
162
+ [ TestCase ( "Thu, 1 May 2025 09:00:00 -0500" , 5 ) ]
163
+ [ TestCase ( "Sun, 1 Jun 2025 09:00:00 -0500" , 6 ) ]
164
+ [ TestCase ( "Tue, 1 Jul 2025 09:00:00 -0500" , 7 ) ]
165
+ [ TestCase ( "Fri, 1 Aug 2025 09:00:00 -0500" , 8 ) ]
166
+ [ TestCase ( "Mon, 1 Sep 2025 09:00:00 -0500" , 9 ) ]
167
+ [ TestCase ( "Wed, 1 Oct 2025 09:00:00 -0500" , 10 ) ]
168
+ [ TestCase ( "Sat, 1 Nov 2025 09:00:00 -0500" , 11 ) ]
169
+ [ TestCase ( "Mon, 1 Dec 2025 09:00:00 -0500" , 12 ) ]
170
+ public void TestMonths ( string value , int month )
171
+ {
172
+ Assert . That ( DateUtils . TryParse ( value , out var date ) , Is . True , $ "Failed to parse date: { value } ") ;
173
+ Assert . That ( date . Month , Is . EqualTo ( month ) ) ;
174
+ }
175
+
176
+ [ TestCase ( "GMT" , 0 ) ]
177
+ [ TestCase ( "UTC" , 0 ) ]
178
+ [ TestCase ( "EDT" , - 400 ) ]
179
+ [ TestCase ( "EST" , - 500 ) ]
180
+ [ TestCase ( "CDT" , - 500 ) ]
181
+ [ TestCase ( "CST" , - 600 ) ]
182
+ [ TestCase ( "MDT" , - 600 ) ]
183
+ [ TestCase ( "MST" , - 700 ) ]
184
+ [ TestCase ( "PDT" , - 700 ) ]
185
+ [ TestCase ( "PST" , - 800 ) ]
186
+ [ TestCase ( "A" , 100 ) ]
187
+ [ TestCase ( "B" , 200 ) ]
188
+ [ TestCase ( "C" , 300 ) ]
189
+ [ TestCase ( "D" , 400 ) ]
190
+ [ TestCase ( "E" , 500 ) ]
191
+ [ TestCase ( "F" , 600 ) ]
192
+ [ TestCase ( "G" , 700 ) ]
193
+ [ TestCase ( "H" , 800 ) ]
194
+ [ TestCase ( "I" , 900 ) ]
195
+ [ TestCase ( "K" , 1000 ) ]
196
+ [ TestCase ( "L" , 1100 ) ]
197
+ [ TestCase ( "M" , 1200 ) ]
198
+ [ TestCase ( "N" , - 100 ) ]
199
+ [ TestCase ( "O" , - 200 ) ]
200
+ [ TestCase ( "P" , - 300 ) ]
201
+ [ TestCase ( "Q" , - 400 ) ]
202
+ [ TestCase ( "R" , - 500 ) ]
203
+ [ TestCase ( "S" , - 600 ) ]
204
+ [ TestCase ( "T" , - 700 ) ]
205
+ [ TestCase ( "U" , - 800 ) ]
206
+ [ TestCase ( "V" , - 900 ) ]
207
+ [ TestCase ( "W" , - 1000 ) ]
208
+ [ TestCase ( "X" , - 1100 ) ]
209
+ [ TestCase ( "Y" , - 1200 ) ]
210
+ [ TestCase ( "Z" , 0 ) ]
211
+ [ TestCase ( "JST" , 900 ) ]
212
+ [ TestCase ( "KST" , 900 ) ]
213
+ public void TestTimezones ( string zone , int expectedOffset )
214
+ {
215
+ TimeSpan tzone = new TimeSpan ( expectedOffset / 100 , Math . Abs ( expectedOffset % 100 ) , 0 ) ;
216
+ var value = string . Format ( "Fri, 28 Feb 2025 09:00:00 {0}" , zone ) ;
217
+
218
+ Assert . That ( DateUtils . TryParse ( value , out var date ) , Is . True , $ "Failed to parse date: { value } ") ;
219
+ Assert . That ( date . Offset , Is . EqualTo ( tzone ) , $ "Parsed date offset does not match: '{ date . Offset } ' vs '{ expectedOffset } '") ;
220
+ }
157
221
}
158
222
}
0 commit comments