[Tex/LaTex] How to write a non-today date in latex with localization formatting

datetimeformatting

I've tried googling around and all I have found is a lot of example on how to format \today. But that isn't what I want. Instead, I want a way to format historical dates based on the localization given to babel.

Say, 'June 3rd 1994' in USenglish and UKenglish?

Here's how to do it using datetime :

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[USenglish,UKenglish,french,spanish,italian]{babel}
\usepackage[nodayofweek,level]{datetime}

\newcommand{\mydate}{\formatdate{3}{6}{1994}}

\begin{document}
\selectlanguage{USenglish}
\mydate

\selectlanguage{UKenglish}
\mydate

\selectlanguage{french}
\mydate

\selectlanguage{spanish}
\mydate

\selectlanguage{italian}
\mydate

\end{document}


Result:

Edit:

The datetime package has now been replaced with datetime2. This only requires a few minor changes to the above example:

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[USenglish,UKenglish,french,spanish,italian]{babel}
\usepackage[useregional]{datetime2}

\newcommand{\mydate}{\DTMdisplaydate{1994}{6}{3}{-1}}

\begin{document}
\selectlanguage{USenglish}
\mydate

\selectlanguage{UKenglish}
\mydate

\selectlanguage{french}
\mydate

\selectlanguage{spanish}
\mydate

\selectlanguage{italian}
\mydate

\end{document}


The result looks like:

I've used the expandable version \DTMdisplaydate. This can be used in PDF bookmarks. There's a robust non-expandable version \DTMdate that has a slightly different syntax:

\newcommand{\mydate}{\DTMdate{1994-6-3}}


The result is the same.