Skip to content

Commit 8fa8928

Browse files
authored
Merge pull request #198 from yuankunzhang/remove-unsupported-named-time-zones
fix: remove unsupported named time zones
2 parents 46a5ef8 + fa90303 commit 8fa8928

File tree

1 file changed

+14
-163
lines changed

1 file changed

+14
-163
lines changed

src/items/time.rs

Lines changed: 14 additions & 163 deletions
Original file line numberDiff line numberDiff line change
@@ -331,237 +331,88 @@ fn timezone_name_offset(input: &mut &str) -> ModalResult<Offset> {
331331
Ok(tz)
332332
}
333333

334-
/// Timezone list extracted from:
335-
/// https://www.timeanddate.com/time/zones/
334+
/// Named timezone list.
335+
///
336+
/// The full list of timezones can be extracted from
337+
/// https://www.timeanddate.com/time/zones/. GNU date only supports a subset of
338+
/// these. We support the same subset as GNU date.
339+
///
340+
/// From the GNU date manual:
341+
///
342+
/// > Time zone items other than ‘UTC’ and ‘Z’ are obsolescent and are not
343+
/// > recommended, because they are ambiguous; for example, ‘EST’ has a
344+
/// > different meaning in Australia than in the United States, and ‘A’ has
345+
/// > different meaning as a military time zone than as an obsolete RFC 822
346+
/// > time zone. Instead, it's better to use unambiguous numeric time zone
347+
/// > corrections like ‘-0500’.
336348
fn tzname_to_offset(input: &str) -> ModalResult<Offset> {
337349
let mut offset_str = match input {
338350
"z" => Ok("+0"),
339-
"yekt" => Ok("+5"),
340-
"yekst" => Ok("+6"),
341-
"yapt" => Ok("+10"),
342-
"yakt" => Ok("+9"),
343-
"yakst" => Ok("+10"),
344351
"y" => Ok("-12"),
345352
"x" => Ok("-11"),
346-
"wt" => Ok("+0"),
347-
"wst" => Ok("+13"),
348-
"wita" => Ok("+8"),
349-
"wit" => Ok("+9"),
350-
"wib" => Ok("+7"),
351-
"wgt" => Ok("-2"),
352-
"wgst" => Ok("-1"),
353-
"wft" => Ok("+12"),
354353
"wet" => Ok("+0"),
355354
"west" => Ok("+1"),
356355
"wat" => Ok("+1"),
357-
"wast" => Ok("+2"),
358-
"warst" => Ok("-3"),
359-
"wakt" => Ok("+12"),
360356
"w" => Ok("-10"),
361-
"vut" => Ok("+11"),
362-
"vost" => Ok("+6"),
363-
"vlat" => Ok("+10"),
364-
"vlast" => Ok("+11"),
365-
"vet" => Ok("-4"),
366357
"v" => Ok("-9"),
367-
"uzt" => Ok("+5"),
368-
"uyt" => Ok("-3"),
369-
"uyst" => Ok("-2"),
370358
"utc" => Ok("+0"),
371-
"ulat" => Ok("+8"),
372-
"ulast" => Ok("+9"),
373359
"u" => Ok("-8"),
374-
"tvt" => Ok("+12"),
375-
"trt" => Ok("+3"),
376-
"tot" => Ok("+13"),
377-
"tost" => Ok("+14"),
378-
"tmt" => Ok("+5"),
379-
"tlt" => Ok("+9"),
380-
"tkt" => Ok("+13"),
381-
"tjt" => Ok("+5"),
382-
"tft" => Ok("+5"),
383-
"taht" => Ok("-10"),
384360
"t" => Ok("-7"),
385-
"syot" => Ok("+3"),
386361
"sst" => Ok("-11"),
387-
"srt" => Ok("-3"),
388-
"sret" => Ok("+11"),
389362
"sgt" => Ok("+8"),
390-
"sct" => Ok("+4"),
391-
"sbt" => Ok("+11"),
392363
"sast" => Ok("+2"),
393-
"samt" => Ok("+4"),
394-
"sakt" => Ok("+11"),
395364
"s" => Ok("-6"),
396-
"rott" => Ok("-3"),
397-
"ret" => Ok("+4"),
398365
"r" => Ok("-5"),
399-
"qyzt" => Ok("+6"),
400366
"q" => Ok("-4"),
401-
"pyt" => Ok("-4"),
402-
"pyst" => Ok("-3"),
403-
"pwt" => Ok("+9"),
404-
"pt" => Ok("-7"),
405367
"pst" => Ok("-8"),
406-
"pont" => Ok("+11"),
407-
"pmst" => Ok("-3"),
408-
"pmdt" => Ok("-2"),
409-
"pkt" => Ok("+5"),
410-
"pht" => Ok("+8"),
411-
"phot" => Ok("+13"),
412-
"pgt" => Ok("+10"),
413-
"pett" => Ok("+12"),
414-
"petst" => Ok("+12"),
415-
"pet" => Ok("-5"),
416368
"pdt" => Ok("-7"),
417369
"p" => Ok("-3"),
418-
"orat" => Ok("+5"),
419-
"omst" => Ok("+6"),
420-
"omsst" => Ok("+7"),
421370
"o" => Ok("-2"),
422371
"nzst" => Ok("+12"),
423372
"nzdt" => Ok("+13"),
424-
"nut" => Ok("-11"),
425373
"nst" => Ok("-3:30"),
426-
"nrt" => Ok("+12"),
427-
"npt" => Ok("+5:45"),
428-
"novt" => Ok("+7"),
429-
"novst" => Ok("+7"),
430-
"nft" => Ok("+11"),
431-
"nfdt" => Ok("+12"),
432374
"ndt" => Ok("-2:30"),
433-
"nct" => Ok("+11"),
434375
"n" => Ok("-1"),
435-
"myt" => Ok("+8"),
436-
"mvt" => Ok("+5"),
437-
"mut" => Ok("+4"),
438-
"mt" => Ok("-6"),
439376
"mst" => Ok("-7"),
440377
"msk" => Ok("+3"),
441378
"msd" => Ok("+4"),
442-
"mmt" => Ok("+6:30"),
443-
"mht" => Ok("+12"),
444379
"mdt" => Ok("-6"),
445-
"mawt" => Ok("+5"),
446-
"mart" => Ok("-9:30"),
447-
"magt" => Ok("+11"),
448-
"magst" => Ok("+12"),
449380
"m" => Ok("+12"),
450-
"lint" => Ok("+14"),
451-
"lhst" => Ok("+10:30"),
452-
"lhdt" => Ok("+11"),
453381
"l" => Ok("+11"),
454-
"kuyt" => Ok("+4"),
455-
"kst" => Ok("+9"),
456-
"krat" => Ok("+7"),
457-
"krast" => Ok("+8"),
458-
"kost" => Ok("+11"),
459-
"kgt" => Ok("+6"),
460382
"k" => Ok("+10"),
461383
"jst" => Ok("+9"),
462384
"ist" => Ok("+5:30"),
463-
"irst" => Ok("+3:30"),
464-
"irkt" => Ok("+8"),
465-
"irkst" => Ok("+9"),
466-
"irdt" => Ok("+4:30"),
467-
"iot" => Ok("+6"),
468-
"idt" => Ok("+3"),
469-
"ict" => Ok("+7"),
470385
"i" => Ok("+9"),
471386
"hst" => Ok("-10"),
472-
"hovt" => Ok("+7"),
473-
"hovst" => Ok("+8"),
474-
"hkt" => Ok("+8"),
475-
"hdt" => Ok("-9"),
476387
"h" => Ok("+8"),
477-
"gyt" => Ok("-4"),
478388
"gst" => Ok("+4"),
479389
"gmt" => Ok("+0"),
480-
"gilt" => Ok("+12"),
481-
"gft" => Ok("-3"),
482-
"get" => Ok("+4"),
483-
"gamt" => Ok("-9"),
484-
"galt" => Ok("-6"),
485390
"g" => Ok("+7"),
486-
"fnt" => Ok("-2"),
487-
"fkt" => Ok("-4"),
488-
"fkst" => Ok("-3"),
489-
"fjt" => Ok("+12"),
490-
"fjst" => Ok("+13"),
491-
"fet" => Ok("+3"),
492391
"f" => Ok("+6"),
493-
"et" => Ok("-4"),
494392
"est" => Ok("-5"),
495-
"egt" => Ok("-1"),
496-
"egst" => Ok("+0"),
497393
"eet" => Ok("+2"),
498394
"eest" => Ok("+3"),
499395
"edt" => Ok("-4"),
500-
"ect" => Ok("-5"),
501396
"eat" => Ok("+3"),
502-
"east" => Ok("-6"),
503-
"easst" => Ok("-5"),
504397
"e" => Ok("+5"),
505-
"ddut" => Ok("+10"),
506-
"davt" => Ok("+7"),
507398
"d" => Ok("+4"),
508-
"chst" => Ok("+10"),
509-
"cxt" => Ok("+7"),
510-
"cvt" => Ok("-1"),
511-
"ct" => Ok("-5"),
512399
"cst" => Ok("-6"),
513-
"cot" => Ok("-5"),
514400
"clt" => Ok("-4"),
515401
"clst" => Ok("-3"),
516-
"ckt" => Ok("-10"),
517-
"cist" => Ok("-5"),
518-
"cidst" => Ok("-4"),
519-
"chut" => Ok("+10"),
520-
"chot" => Ok("+8"),
521-
"chost" => Ok("+9"),
522-
"chast" => Ok("+12:45"),
523-
"chadt" => Ok("+13:45"),
524402
"cet" => Ok("+1"),
525403
"cest" => Ok("+2"),
526404
"cdt" => Ok("-5"),
527-
"cct" => Ok("+6:30"),
528405
"cat" => Ok("+2"),
529-
"cast" => Ok("+8"),
530406
"c" => Ok("+3"),
531-
"btt" => Ok("+6"),
532407
"bst" => Ok("+6"),
533408
"brt" => Ok("-3"),
534409
"brst" => Ok("-2"),
535-
"bot" => Ok("-4"),
536-
"bnt" => Ok("+8"),
537410
"b" => Ok("+2"),
538-
"aoe" => Ok("-12"),
539-
"azt" => Ok("+4"),
540-
"azst" => Ok("+5"),
541-
"azot" => Ok("-1"),
542-
"azost" => Ok("+0"),
543-
"awst" => Ok("+8"),
544-
"awdt" => Ok("+9"),
545-
"at" => Ok("-4:00"),
546411
"ast" => Ok("-3"),
547412
"art" => Ok("-3"),
548-
"aqtt" => Ok("+5"),
549-
"anat" => Ok("+12"),
550-
"anast" => Ok("+12"),
551-
"amt" => Ok("-4"),
552-
"amst" => Ok("-3"),
553-
"almt" => Ok("+6"),
554413
"akst" => Ok("-9"),
555414
"akdt" => Ok("-8"),
556-
"aft" => Ok("+4:30"),
557-
"aet" => Ok("+11"),
558-
"aest" => Ok("+10"),
559-
"aedt" => Ok("+11"),
560415
"adt" => Ok("+4"),
561-
"acwst" => Ok("+8:45"),
562-
"act" => Ok("-5"),
563-
"acst" => Ok("+9:30"),
564-
"acdt" => Ok("+10:30"),
565416
"a" => Ok("+1"),
566417
_ => Err(ErrMode::Backtrack(ContextError::new())),
567418
}?;

0 commit comments

Comments
 (0)