@@ -27,24 +27,24 @@ import { parse } from 'date-and-time';
2727
2828// Basic date parsing
2929parse (' 2025-08-23' , ' YYYY-MM-DD' );
30- // => Fri Aug 23 2025 00:00:00 GMT+0900
30+ // => Fri Aug 23 2025 00:00:00 GMT-0700
3131
32- parse (' 08/23/2025' , ' MM/DD/YYYY' );
33- // => Fri Aug 23 2025 00:00:00 GMT+0900
32+ parse (' 08/23/2025' , ' MM/DD/YYYY' );
33+ // => Fri Aug 23 2025 00:00:00 GMT-0700
3434
3535parse (' 23.08.2025' , ' DD.MM.YYYY' );
36- // => Fri Aug 23 2025 00:00:00 GMT+0900
36+ // => Fri Aug 23 2025 00:00:00 GMT-0700
3737
3838// Time parsing
3939parse (' 14:30:45' , ' HH:mm:ss' );
40- // => Thu Jan 01 1970 14:30:45 GMT+0900
40+ // => Thu Jan 01 1970 14:30:45 GMT-0800
4141
4242parse (' 2:30:45 PM' , ' h:mm:ss A' );
43- // => Thu Jan 01 1970 14:30:45 GMT+0900
43+ // => Thu Jan 01 1970 14:30:45 GMT-0800
4444
4545// Combined date and time
4646parse (' 2025-08-23 14:30:45' , ' YYYY-MM-DD HH:mm:ss' );
47- // => Fri Aug 23 2025 14:30:45 GMT+0900
47+ // => Fri Aug 23 2025 14:30:45 GMT-0700
4848```
4949
5050## Format Tokens
@@ -133,7 +133,7 @@ import es from 'date-and-time/locales/es';
133133
134134// Spanish parsing
135135parse (' 23 de agosto de 2025' , ' D [de] MMMM [de] YYYY' , { locale: es });
136- // => Fri Aug 23 2025 00:00:00 GMT+0900
136+ // => Fri Aug 23 2025 00:00:00 GMT-0700
137137```
138138
139139For a complete list of all supported locales with import examples, see [ Supported Locales] ( ../locales ) .
@@ -186,11 +186,11 @@ import beng from 'date-and-time/numerals/beng';
186186
187187// Arabic-Indic numerals
188188parse (' ٠٨/٠٧/٢٠٢٥' , ' DD/MM/YYYY' , { numeral: arab });
189- // => Fri Aug 08 2025 00:00:00 GMT+0900
189+ // => Fri Aug 08 2025 00:00:00 GMT-0700
190190
191- // Bengali numerals
191+ // Bengali numerals
192192parse (' ০৮/০৭/২০২৫' , ' DD/MM/YYYY' , { numeral: beng });
193- // => Fri Aug 08 2025 00:00:00 GMT+0900
193+ // => Fri Aug 08 2025 00:00:00 GMT-0700
194194```
195195
196196** Available numeral systems:**
@@ -213,11 +213,11 @@ import { parse } from 'date-and-time';
213213
214214// Gregorian calendar (default)
215215parse (' August 23, 2025' , ' MMMM D, YYYY' );
216- // => Fri Aug 23 2025 00:00:00 GMT+0900
216+ // => Fri Aug 23 2025 00:00:00 GMT-0700
217217
218218// Buddhist calendar (543 years behind)
219219parse (' August 23, 2568' , ' MMMM D, YYYY' , { calendar: ' buddhist' });
220- // => Fri Aug 23 2025 00:00:00 GMT+0900
220+ // => Fri Aug 23 2025 00:00:00 GMT-0700
221221```
222222
223223### ignoreCase
@@ -236,10 +236,10 @@ parse('august 23, 2025', 'MMMM D, YYYY');
236236
237237// Case-insensitive
238238parse (' AUGUST 23, 2025' , ' MMMM D, YYYY' , { ignoreCase: true });
239- // => Fri Aug 23 2025 00:00:00 GMT+0900
239+ // => Fri Aug 23 2025 00:00:00 GMT-0700
240240
241241parse (' fri aug 23 2025' , ' ddd MMM DD YYYY' , { ignoreCase: true });
242- // => Fri Aug 23 2025 00:00:00 GMT+0900
242+ // => Fri Aug 23 2025 00:00:00 GMT-0700
243243```
244244
245245### hour12
@@ -254,11 +254,11 @@ import { parse } from 'date-and-time';
254254
255255// h12 format - midnight is 12 AM
256256parse (' 12:30 AM' , ' h:mm A' , { hour12: ' h12' });
257- // => Thu Jan 01 1970 00:30:00 GMT+0900
257+ // => Thu Jan 01 1970 00:30:00 GMT-0800
258258
259259// h11 format - midnight is 0 AM
260260parse (' 0:30 AM' , ' h:mm A' , { hour12: ' h11' });
261- // => Thu Jan 01 1970 00:30:00 GMT+0900
261+ // => Thu Jan 01 1970 00:30:00 GMT-0800
262262```
263263
264264### hour24
@@ -273,13 +273,47 @@ import { parse } from 'date-and-time';
273273
274274// h23 format - midnight is 0
275275parse (' 0:30' , ' H:mm' , { hour24: ' h23' });
276- // => Thu Jan 01 1970 00:30:00 GMT+0900
276+ // => Thu Jan 01 1970 00:30:00 GMT-0800
277277
278278// h24 format - midnight is 24 (of previous day)
279279parse (' 24:30' , ' H:mm' , { hour24: ' h24' });
280- // => Thu Jan 01 1970 00:30:00 GMT+0900
280+ // => Thu Jan 01 1970 00:30:00 GMT-0800
281281```
282282
283+ ### plugins
284+
285+ ** Type** : ` ParserPlugin[] `
286+ ** Default** : ` undefined `
287+
288+ Enables additional parse tokens provided by plugins. Plugins extend the parser with special tokens that are not included in the core library.
289+
290+ ``` typescript
291+ import { parse } from ' date-and-time' ;
292+ import { parser as ordinal } from ' date-and-time/plugins/ordinal' ;
293+ import { parser as two_digit_year } from ' date-and-time/plugins/two-digit-year' ;
294+ import { parser as microsecond } from ' date-and-time/plugins/microsecond' ;
295+
296+ // Use ordinal plugin
297+ parse (' January 1st, 2025' , ' MMMM DDD, YYYY' , { plugins: [ordinal ] });
298+ // => Wed Jan 01 2025 00:00:00 GMT-0800
299+
300+ // Use two-digit-year plugin
301+ parse (' 12/25/99' , ' MM/DD/YY' , { plugins: [two_digit_year ] });
302+ // => Sat Dec 25 1999 00:00:00 GMT-0800
303+
304+ // Use microsecond plugin
305+ parse (' 14:30:45.123456' , ' HH:mm:ss.SSSSSS' , { plugins: [microsecond ] });
306+ // => Thu Jan 01 1970 14:30:45 GMT-0800
307+
308+ // Use multiple plugins together
309+ parse (' January 1st, 99 14:30:45.123456' , ' MMMM DDD, YY HH:mm:ss.SSSSSS' , {
310+ plugins: [ordinal , two_digit_year , microsecond ]
311+ });
312+ // => Fri Jan 01 1999 14:30:45 GMT-0800
313+ ```
314+
315+ For a complete list of available plugins, see [ Plugins] ( ../plugins ) .
316+
283317## Parsing Behavior and Limitations
284318
285319### Default Date and Time Values
@@ -291,19 +325,19 @@ import { parse } from 'date-and-time';
291325
292326// Only time - defaults to Jan 1, 1970
293327parse (' 14:30:45' , ' HH:mm:ss' );
294- // => Thu Jan 01 1970 14:30:45 GMT+0900
328+ // => Thu Jan 01 1970 14:30:45 GMT-0800
295329
296330// Only date - defaults to 00:00:00
297331parse (' 2025-08-23' , ' YYYY-MM-DD' );
298- // => Fri Aug 23 2025 00:00:00 GMT+0900
332+ // => Fri Aug 23 2025 00:00:00 GMT-0700
299333
300334// Year and month - defaults to 1st day
301335parse (' 2025-08' , ' YYYY-MM' );
302- // => Mon Aug 01 2025 00:00:00 GMT+0900
336+ // => Fri Aug 01 2025 00:00:00 GMT-0700
303337
304338// Just year - defaults to Jan 1st, 00:00:00
305339parse (' 2025' , ' YYYY' );
306- // => Wed Jan 01 2025 00:00:00 GMT+0900
340+ // => Wed Jan 01 2025 00:00:00 GMT-0800
307341```
308342
309343### Date Range Limitations
@@ -315,15 +349,15 @@ import { parse } from 'date-and-time';
315349
316350// Valid maximum date
317351parse (' Dec 31 9999' , ' MMM D YYYY' );
318- // => Dec 31 9999 00:00:00 GMT+0900
352+ // => Fri Dec 31 9999 00:00:00 GMT-0800
319353
320354// Invalid - exceeds maximum
321355parse (' Dec 31 10000' , ' MMM D YYYY' );
322356// => Invalid Date
323357
324358// Valid minimum date
325359parse (' Jan 1 0001' , ' MMM D YYYY' );
326- // => Jan 1 0001 00:00:00 GMT+0900
360+ // => Mon Jan 1 0001 00:00:00 GMT-0800
327361
328362// Invalid - below minimum
329363parse (' Jan 1 0000' , ' MMM D YYYY' );
@@ -339,7 +373,7 @@ import { parse } from 'date-and-time';
339373
340374// Parsed as local timezone
341375parse (' 14:30:45' , ' HH:mm:ss' );
342- // => Thu Jan 01 1970 14:30:45 GMT+0900
376+ // => Thu Jan 01 1970 14:30:45 GMT-0800
343377
344378// Timezone offset in input takes precedence
345379parse (' 14:30:45 +0000' , ' HH:mm:ss Z' );
@@ -359,11 +393,11 @@ import { parse } from 'date-and-time';
359393
360394// Without meridiem - ambiguous time
361395parse (' 11:30:45' , ' h:mm:ss' );
362- // => Thu Jan 01 1970 11:30:45 GMT+0900 (assumes AM)
396+ // => Thu Jan 01 1970 11:30:45 GMT-0800 (assumes AM)
363397
364398// With meridiem - unambiguous time
365399parse (' 11:30:45 PM' , ' h:mm:ss A' );
366- // => Thu Jan 01 1970 23:30:45 GMT+0900
400+ // => Thu Jan 01 1970 23:30:45 GMT-0800
367401```
368402
369403## Advanced Usage
@@ -376,17 +410,17 @@ Parts of the format string enclosed in square brackets are treated as literal te
376410import { parse } from ' date-and-time' ;
377411
378412parse (' Today is Saturday, August 23, 2025' , ' [Today is] dddd, MMMM D, YYYY' );
379- // => Fri Aug 23 2025 00:00:00 GMT+0900
413+ // => Sat Aug 23 2025 00:00:00 GMT-0700
380414
381415parse (' 2025-08-23T14:30:45Z' , ' YYYY-MM-DD[T]HH:mm:ss[Z]' );
382- // => Fri Aug 23 2025 14:30:45 GMT+0900
416+ // => Sat Aug 23 2025 14:30:45 GMT-0700
383417
384418parse (' Report generated on 2025/08/23 at 14:30' , ' [Report generated on] YYYY/MM/DD [at] HH:mm' );
385- // => Fri Aug 23 2025 14:30:00 GMT+0900
419+ // => Sat Aug 23 2025 14:30:00 GMT-0700
386420
387421// Escape square brackets to parse them from input string
388422parse (' [2025-08-23 14:30:45]' , ' \\ [YYYY-MM-DD HH:mm:ss\\ ]' );
389- // => Fri Aug 23 2025 14:30:45 GMT+0900
423+ // => Sat Aug 23 2025 14:30:45 GMT-0700
390424```
391425
392426### Wildcard Parsing
@@ -402,7 +436,7 @@ parse('2025/08/23 14:30:45', 'YYYY/MM/DD');
402436
403437// Use whitespace as wildcard (9 spaces to match ' 14:30:45')
404438parse (' 2025/08/23 14:30:45' , ' YYYY/MM/DD ' );
405- // => Fri Aug 23 2025 00:00:00 GMT+0900
439+ // => Sat Aug 23 2025 00:00:00 GMT-0700
406440```
407441
408442### Ellipsis Token
@@ -414,11 +448,11 @@ import { parse } from 'date-and-time';
414448
415449// Ignore everything after the date
416450parse (' 2025/08/23 14:30:45' , ' YYYY/MM/DD...' );
417- // => Fri Aug 23 2025 00:00:00 GMT+0900
451+ // => Sat Aug 23 2025 00:00:00 GMT-0700
418452
419453// More complex example
420454parse (' Log entry: 2025-08-23 some extra data here' , ' [Log entry: ]YYYY-MM-DD...' );
421- // => Fri Aug 23 2025 00:00:00 GMT+0900
455+ // => Sat Aug 23 2025 00:00:00 GMT-0700
422456```
423457
424458### Complex Localized Parsing
@@ -445,13 +479,13 @@ import { parse } from 'date-and-time';
445479parse (' 2025-08-23T14:30:45.123Z' , ' YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' , { timeZone: ' UTC' });
446480// => Fri Aug 23 2025 14:30:45 GMT+0000
447481
448- // RFC 2822 format
482+ // RFC 2822 format
449483parse (' Sat, 23 Aug 2025 14:30:45 +0900' , ' ddd, DD MMM YYYY HH:mm:ss ZZ' );
450- // => Fri Aug 23 2025 14:30:45 GMT+0900
484+ // => Sat Aug 23 2025 14:30:45 GMT+0900
451485
452486// File naming format
453487parse (' 20250823_143045' , ' YYYYMMDD_HHmmss' );
454- // => Fri Aug 23 2025 14:30:45 GMT+0900
488+ // => Sat Aug 23 2025 14:30:45 GMT-0700
455489```
456490
457491## Error Handling
@@ -508,12 +542,12 @@ import { parse } from 'date-and-time';
508542
509543const logLine = ' [2025-08-23 14:30:45.123] Application started' ;
510544const timestamp = parse (logLine , ' YYYY-MM-DD HH:mm:ss.SSS ...' );
511- // => Fri Aug 23 2025 14:30:45 GMT+0900
545+ // => Sat Aug 23 2025 14:30:45 GMT-0700
512546
513547// For different log formats
514548const syslogLine = ' Aug 23 14:30:45 server: Process started' ;
515549const syslogTimestamp = parse (syslogLine , ' MMM DD HH:mm:ss...' );
516- // => Fri Aug 23 1970 14:30:45 GMT+0900
550+ // => Sat Aug 23 1970 14:30:45 GMT-0700
517551```
518552
519553### API Responses
0 commit comments