Skip to main content

Languages and patterns

qddate ships a fixed set of languages. Coverage grows when someone adds a pattern table and tests — not by loading CLDR at runtime.

Supported languages

CodeLanguageNotes
enEnglishNumeric cores, US mm/dd, weekdays, abbreviated months
deGermanFull, short, weekday, month-first
ruRussianNominative/genitive months, optional г. / года
esSpanishArticles (de), comma-year (03 de Julio, 2026)
frFrenchMonth names with accents
itItalianMonth names, weekdays
nlDutchFull and short months, weekdays
ptPortugueseArticles
plPolishNominative and genitive
czCzechNominative and genitive
bgBulgarianCyrillic month names
trTurkishMonth names, optional suffixes
roRomanianFull and CLDR-abbreviated months
ukUkrainianNominative, genitive, abbreviated

Language-neutral numeric patterns (ISO-like YYYY-MM-DD, dd.mm.yyyy, compact digits) live with the English table but are available regardless of month-name language.

How many patterns?

The catalog is base patterns × generated variants (134 base patterns in the current tree). Each base date pattern can expand with HH:MM, HH:MM:SS, and trailing-text forms. Counts on each language page are base patterns from qddate/patterns/*.py. Generated variants are produced at DateParser construction when generate=True.

Regenerate the per-language tables after pattern changes:

python scripts/generate_pattern_docs.py

Pattern flags

  • Year Short: 2-digit years (24 → 2024-style handling in that pattern)
  • No Year: day-month only; parse() fills the current year
  • Filter: stricter prefix/length filtering (higher means more aggressive)

Format strings use strftime-style tokens (%d, %m, %Y, %y, %b). Length min/max bound which strings a pattern is even tried against.

Pages

Pick a language in the sidebar, or start with English (numeric cores) and Russian / German for month-name examples.