%\iffalse
%<*package>
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%</package>
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
% Copyright (C) 2015 Nicola Talbot, all rights reserved.
% Maintainer Tuomas Välimäki.
% \fi
% \iffalse
%<*driver>
\documentclass{ltxdoc}

\usepackage{alltt}
\usepackage{graphicx}
\usepackage{fontspec}
\usepackage[colorlinks,
            bookmarks,
            hyperindex=false,
            pdfauthor={Tuomas V\"alim\"aki},
            pdftitle={datetime2.sty Finnish Module}]{hyperref}

\CheckSum{464}

\renewcommand*{\usage}[1]{\hyperpage{#1}}
\renewcommand*{\main}[1]{\hyperpage{#1}}
\IndexPrologue{\section*{\indexname}\markboth{\indexname}{\indexname}}
\setcounter{IndexColumns}{2}

\newcommand*{\sty}[1]{\textsf{#1}}
\newcommand*{\opt}[1]{\texttt{#1}\index{#1=\texttt{#1}|main}}
\newcommand*{\utc}[2]{\textsc{utc}\ifnum#1<0 $-$\number-#1\else $+$\number#1\fi
 \ifnum#2>0 :\number#2 \fi\relax}

\RecordChanges
\PageIndex
\CodelineNumbered

\begin{document}
\DocInput{datetime2-finnish.dtx}
\end{document}
%</driver>
%\fi
%
%\MakeShortVerb{"}
%
%\title{Finnish Module for datetime2 Package}
%\author{Tuomas V\"alim\"aki \and Nicola L. C. Talbot (inactive)}
%\date{2018-03-20 (v1.2)}
%\maketitle
%
%\begin{abstract}
%This is the Finnish language module for the \sty{datetime2}
%package. If you want to use the settings in this module you must
%install it in addition to installing \sty{datetime2}. If you use
%\sty{babel} or \sty{polyglossia}, you will need this module to
%prevent them from redefining \cs{today}. The \sty{datetime2}
% \opt{useregional} setting must be set to "text" or "numeric"
% for the language styles to be set.
% Alternatively, you can set the style in the document using
% \cs{DTMsetstyle}, but this may be changed by \cs{date}\meta{language}
% depending on the value of the \opt{useregional} setting.
% Currently there is only a regionless style.
%\end{abstract}
%
%\tableofcontents
%\clearpage
%
%\section{Introduction}
%\label{sec:intro}
%This module defines the styles "finnish" and "finnish-numeric".
%The "finnish" style will automatically be set if the \opt{useregional}
%option is set to \texttt{text}, and the "finnish-numeric" style is automatically
%set if the \opt{useregional} option is set to \texttt{numeric}.
%
%There are a number of settings provided that can be used in
%\cs{DTMlangsetup} to modify the date-time style. These are:
%
%\begin{description}
%\item[\opt{dowdaysep}] The separator between the day of week name and the
%day of month number. This defaults to \cs{space}. Ignored if the
%\opt{showdow} option is \texttt{false}.
%
%\item[\opt{daymonthsep}] The separator between the day and the month
%name in the \texttt{finnish} style. This defaults to \cs{space}.
%
%\item[\opt{monthyearsep}] The separator between the month name and year
% in the \texttt{finnish} style. This defaults to \cs{space}.
%
%\item[\opt{datesep}] The separator between the date numbers in the
%"finnish-numeric" style. This defaults to "." (period).
%
%\item[\opt{timesep}] The separator between the hours and minutes in both
%"finnish" and "finnish-numeric" styles. This defaults to "." (period).
%
%\item[\opt{datetimesep}] The separator between the date and time for the
%full date-time format (as used by \cs{DTMdisplay}) for both the
%"finnish" and "finnish-numeric" styles. This defaults
%to \cs{space}.
%
%\item[\opt{timezonesep}] The separator between the time and zone for the
%full date-time format (as used by \cs{DTMdisplay}) for both the
%"finnish" and "finnish-numeric" styles. This defaults
%to \cs{space}.
%
%\item[\opt{abbr}] This is a~boolean key. If "true", the month (and week
%day name if shown) is abbreviated for the "finnish" style. The default is "false".
%
%\item[\opt{mapzone}] This is a~boolean key. If "true" the time zone
%mappings are applied. (The default is \texttt{true}.) The "finnish"
% and "finnish-numeric" styles set the mappings EET
%(\utc{02}{00}) and EEST (\utc{03}{00}).
%Other time zone mappings that have previously been set
%(for example, by another regional style) will remain unchanged
%unless you redefine \cs{DTMresetzones} to reset or unset them.
%
%\item[\opt{showdayofmonth}] A boolean key that determines whether
%or not to show the day of the month. The default value is "true".
%If "false" the day-month separator is also omitted.
%
%\item[\opt{showyear}] A boolean key that determines whether
%or not to show the year. The default value is "true". If "false"
%the month-year separator is also omitted.
%\end{description}
%
%The above settings are specific to this module. In addition, the
%\opt{showdow} boolean option provided by the \sty{datetime2} package is
%checked to determine whether or not to show the day of the
%week in the "finnish" style. The \opt{showdate}, \opt{showzone},
%\opt{showseconds} and \opt{showzoneminutes} settings of \sty{datetime2}
%are honoured.
%
%\StopEventually{%
%\clearpage
%\phantomsection
%\addcontentsline{toc}{section}{Change History}%
%\PrintChanges
%\addcontentsline{toc}{section}{\indexname}%
%\PrintIndex}
%\section{The Code}
%\iffalse
%    \begin{macrocode}
%<*datetime2-finnish-utf8.ldf>
%    \end{macrocode}
%\fi
%\subsection{UTF-8 (\texttt{datetime2-finnish-utf8.ldf})}
%This file contains the settings that use UTF-8 characters. This
%file is loaded if XeLaTeX or LuaLaTeX are used. Please make sure
%your text editor is set to UTF-8 if you want to view this code.
%\changes{1.0}{2015-03-30}{Initial release}
%\changes{1.1}{2016-03-29}{separated partitive case from month names
% and added support for abbreviations and day of week}
%
% Identify module
%    \begin{macrocode}
\ProvidesDateTimeModule{finnish-utf8}[2018/03/20 v1.2]
%    \end{macrocode}
%\begin{macro}{\DTMfinnishordinal}
%    \begin{macrocode}
\newcommand*{\DTMfinnishordinal}[1]{%
  \number#1.%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishmonthname}
% Finnish month names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishmonthname}[1]{%
%    \end{macrocode}
% v1.1 separated partitive case from month names
%\changes{1.1}{2016-03-29}{fixed}
%    \begin{macrocode}
  \ifcase#1
  \or
  tammikuu%
  \or
  helmikuu%
  \or
  maaliskuu%
  \or
  huhtikuu%
  \or
  toukokuu%
  \or
  kesäkuu%
  \or
  heinäkuu%
  \or
  elokuu%
  \or
  syyskuu%
  \or
  lokakuu%
  \or
  marraskuu%
  \or
  joulukuu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishMonthname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishMonthname}[1]{%
%    \end{macrocode}
% v1.1 separated partitive case from month names
%\changes{1.1}{2016-03-29}{fixed}
%    \begin{macrocode}
  \ifcase#1
  \or
  Tammikuu%
  \or
  Helmikuu%
  \or
  Maaliskuu%
  \or
  Huhtikuu%
  \or
  Toukokuu%
  \or
  Kesäkuu%
  \or
  Heinäkuu%
  \or
  Elokuu%
  \or
  Syyskuu%
  \or
  Lokakuu%
  \or
  Marraskuu%
  \or
  Joulukuu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
% Added support for abbreviations in v1.1.
%\begin{macro}{\DTMfinnishshortmonthname}
% Abbreviated Finnish month names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortmonthname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  \or
  tammi%
  \or
  helmi%
  \or
  maalis%
  \or
  huhti%
  \or
  touko%
  \or
  kesä%
  \or
  heinä%
  \or
  elo%
  \or
  syys%
  \or
  loka%
  \or
  marras%
  \or
  joulu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishshortMonthname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortMonthname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  \or
  Tammi%
  \or
  Helmi%
  \or
  Maalis%
  \or
  Huhti%
  \or
  Touko%
  \or
  Kesä%
  \or
  Heinä%
  \or
  Elo%
  \or
  Syys%
  \or
  Loka%
  \or
  Marras%
  \or
  Joulu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%Added support for day of week names in v1.1.
%\begin{macro}{\DTMfinnishweekdayname}
% Finnish day of week names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishweekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  maanantai%
  \or
  tiistai%
  \or
  keskiviikko%
  \or
  torstai%
  \or
  perjantai%
  \or
  lauantai%
  \or
  sunnuntai%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishWeekdayname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishWeekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  Maanantai%
  \or
  Tiistai%
  \or
  Keskiviikko%
  \or
  Torstai%
  \or
  Perjantai%
  \or
  Lauantai%
  \or
  Sunnuntai%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishshortweekdayname}
% Finnish abbreviated day of week names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortweekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  ma%
  \or
  ti%
  \or
  ke%
  \or
  to%
  \or
  pe%
  \or
  la%
  \or
  su%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishshortWeekdayname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortWeekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  Ma%
  \or
  Ti%
  \or
  Ke%
  \or
  To%
  \or
  Pe%
  \or
  La%
  \or
  Su%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\iffalse
%    \begin{macrocode}
%</datetime2-finnish-utf8.ldf>
%    \end{macrocode}
%\fi
%\iffalse
%    \begin{macrocode}
%<*datetime2-finnish-ascii.ldf>
%    \end{macrocode}
%\fi
%\subsection{ASCII (\texttt{datetime2-finnish-ascii.ldf})}
%This file contains the settings that use \LaTeX\ commands for
%non-ASCII characters. This should be input if neither XeLaTeX nor
%LuaLaTeX are used. Even if the user has loaded \sty{inputenc} with
%"utf8", this file should still be used not the
%\texttt{datetime2-finnish-utf8.ldf} file as the non-ASCII
%characters are made active in that situation and would need
%protecting against expansion.
%\changes{1.0}{2015-03-30}{Initial release}
%\changes{1.1}{2016-03-29}{separated partitive case from month names
% and added support for abbreviations and day of week}
%
% Identify module
%    \begin{macrocode}
\ProvidesDateTimeModule{finnish-ascii}[2018/03/20 v1.2]
%    \end{macrocode}
%
%\begin{macro}{\DTMfinnishordinal}
%    \begin{macrocode}
\newcommand*{\DTMfinnishordinal}[1]{%
  \number#1.%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishmonthname}
% Finnish month names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishmonthname}[1]{%
%    \end{macrocode}
% v1.1 separated partitive case from month names
%\changes{1.1}{2016-03-29}{fixed}
%    \begin{macrocode}
  \ifcase#1
  \or
  tammikuu%
  \or
  helmikuu%
  \or
  maaliskuu%
  \or
  huhtikuu%
  \or
  toukokuu%
  \or
  kes\protect\"akuu%
  \or
  hein\protect\"akuu%
  \or
  elokuu%
  \or
  syyskuu%
  \or
  lokakuu%
  \or
  marraskuu%
  \or
  joulukuu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishMonthname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishMonthname}[1]{%
%    \end{macrocode}
% v1.1 separated partitive case from month names
%\changes{1.1}{2016-03-29}{fixed}
%    \begin{macrocode}
  \ifcase#1
  \or
  Tammikuu%
  \or
  Helmikuu%
  \or
  Maaliskuu%
  \or
  Huhtikuu%
  \or
  Toukokuu%
  \or
  Kes\protect\"akuu%
  \or
  Hein\protect\"akuu%
  \or
  Elokuu%
  \or
  Syyskuu%
  \or
  Lokakuu%
  \or
  Marraskuu%
  \or
  Joulukuu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
% Added support for abbreviations in v1.1.
%\begin{macro}{\DTMfinnishshortmonthname}
% Abbreviated Finnish month names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortmonthname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  \or
  tammi%
  \or
  helmi%
  \or
  maalis%
  \or
  huhti%
  \or
  touko%
  \or
  kes\protect\"a%
  \or
  hein\protect\"a%
  \or
  elo%
  \or
  syys%
  \or
  loka%
  \or
  marras%
  \or
  joulu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishshortMonthname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortMonthname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  \or
  Tammi%
  \or
  Helmi%
  \or
  Maalis%
  \or
  Huhti%
  \or
  Touko%
  \or
  Kes\protect\"a%
  \or
  Hein\protect\"a%
  \or
  Elo%
  \or
  Syys%
  \or
  Loka%
  \or
  Marras%
  \or
  Joulu%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%Added support for day of week names in v1.1.
%\begin{macro}{\DTMfinnishweekdayname}
% Finnish day of week names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishweekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  maanantai%
  \or
  tiistai%
  \or
  keskiviikko%
  \or
  torstai%
  \or
  perjantai%
  \or
  lauantai%
  \or
  sunnuntai%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishWeekdayname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishWeekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  Maanantai%
  \or
  Tiistai%
  \or
  Keskiviikko%
  \or
  Torstai%
  \or
  Perjantai%
  \or
  Lauantai%
  \or
  Sunnuntai%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishshortweekdayname}
% Finnish abbreviated day of week names.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortweekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  ma%
  \or
  ti%
  \or
  ke%
  \or
  to%
  \or
  pe%
  \or
  la%
  \or
  su%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishshortWeekdayname}
% As above but capitalize.
%    \begin{macrocode}
\newcommand*{\DTMfinnishshortWeekdayname}[1]{%
%    \end{macrocode}
%\changes{1.1}{2016-03-29}{new}
%    \begin{macrocode}
  \ifcase#1
  Ma%
  \or
  Ti%
  \or
  Ke%
  \or
  To%
  \or
  Pe%
  \or
  La%
  \or
  Su%
  \fi
}
%    \end{macrocode}
%\end{macro}
%
%\iffalse
%    \begin{macrocode}
%</datetime2-finnish-ascii.ldf>
%    \end{macrocode}
%\fi
%
%\subsection{Main Finnish Module (\texttt{datetime2-finnish.ldf})}
%\changes{1.0}{2015-03-30}{Initial release}
%\changes{1.1}{2016-03-29}{separated partitive case from month names
% and added support for abbreviations and day of week}
%
%\iffalse
%    \begin{macrocode}
%<*datetime2-finnish.ldf>
%    \end{macrocode}
%\fi
%
% Identify Module
%    \begin{macrocode}
\ProvidesDateTimeModule{finnish}[2018/03/20 v1.2]
%    \end{macrocode}
% Need to find out if XeTeX or LuaTeX are being used.
%    \begin{macrocode}
\RequirePackage{ifxetex,ifluatex}
%    \end{macrocode}
% XeTeX and LuaTeX natively support UTF-8, so load
% \texttt{finnish-utf8} if either of those engines are used
% otherwise load \texttt{finnish-ascii}.
%    \begin{macrocode}
\ifxetex
 \RequireDateTimeModule{finnish-utf8}
\else
 \ifluatex
   \RequireDateTimeModule{finnish-utf8}
 \else
   \RequireDateTimeModule{finnish-ascii}
 \fi
\fi
%    \end{macrocode}
%
% Define the \texttt{finnish} style.
% The time style is the same as the "default" style
% provided by \sty{datetime2}.
%
% Allow the user a way of configuring the "finnish" and
% "finnish-numeric" styles. This doesn't use the package wide
% separators such as
% \cs{dtm@datetimesep} in case other date formats are also required.
%
%\begin{macro}{\DTMfinnishdowdaysep}
%\changes{1.1}{2016-03-29}{new}
% The separator between the day of week name and the day of month
% number for the text format (v1.1).
%    \begin{macrocode}
\newcommand*{\DTMfinnishdowdaysep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishdaymonthsep}
% The separator between the day and month for the text format.
%    \begin{macrocode}
\newcommand*{\DTMfinnishdaymonthsep}{%
 \DTMtexorpdfstring{\protect~}{\space}%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishmonthyearsep}
% The separator between the month and year for the text format.
%    \begin{macrocode}
\newcommand*{\DTMfinnishmonthyearsep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishdatetimesep}
% The separator between the date and time blocks in the full format
% (either text or numeric).
%    \begin{macrocode}
\newcommand*{\DTMfinnishdatetimesep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishtimezonesep}
% The separator between the time and zone blocks in the full format
% (either text or numeric).
%    \begin{macrocode}
\newcommand*{\DTMfinnishtimezonesep}{\space}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishdatesep}
% The separator for the numeric date format.
%    \begin{macrocode}
\newcommand*{\DTMfinnishdatesep}{.}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\DTMfinnishtimesep}
% The separator for the numeric time format.
%    \begin{macrocode}
\newcommand*{\DTMfinnishtimesep}{.}
%    \end{macrocode}
%\end{macro}
%
%Provide keys that can be used in \cs{DTMlangsetup} to set these
%separators.
%    \begin{macrocode}
\DTMdefkey{finnish}{dowdaysep}{\renewcommand*{\DTMfinnishdowdaysep}{#1}}
\DTMdefkey{finnish}{daymonthsep}{\renewcommand*{\DTMfinnishdaymonthsep}{#1}}
\DTMdefkey{finnish}{monthyearsep}{\renewcommand*{\DTMfinnishmonthyearsep}{#1}}
\DTMdefkey{finnish}{datetimesep}{\renewcommand*{\DTMfinnishdatetimesep}{#1}}
\DTMdefkey{finnish}{timezonesep}{\renewcommand*{\DTMfinnishtimezonesep}{#1}}
\DTMdefkey{finnish}{datesep}{\renewcommand*{\DTMfinnishdatesep}{#1}}
\DTMdefkey{finnish}{timesep}{\renewcommand*{\DTMfinnishtimesep}{#1}}
%    \end{macrocode}
%
% Define a boolean key that can switch between full and abbreviated
% formats for the month and day of week names in the text format (v1.1).
%\changes{1.1}{2016-03-29}{separated partitive case from month names
% and added support for abbreviations and day of week}
%    \begin{macrocode}
\DTMdefboolkey{finnish}{abbr}[true]{}
%    \end{macrocode}
% The default is the full name.
%    \begin{macrocode}
\DTMsetbool{finnish}{abbr}{false}
%    \end{macrocode}
%
% Define a boolean key that determines if the time zone mappings
% should be used.
%    \begin{macrocode}
\DTMdefboolkey{finnish}{mapzone}[true]{}
%    \end{macrocode}
% The default is to use mappings.
%    \begin{macrocode}
\DTMsetbool{finnish}{mapzone}{true}
%    \end{macrocode}
%
% Define a boolean key that determines if the day of month should be
% displayed.
%    \begin{macrocode}
\DTMdefboolkey{finnish}{showdayofmonth}[true]{}
%    \end{macrocode}
% The default is to show the day of month.
%    \begin{macrocode}
\DTMsetbool{finnish}{showdayofmonth}{true}
%    \end{macrocode}
%
% Define a boolean key that determines if the year should be
% displayed.
%    \begin{macrocode}
\DTMdefboolkey{finnish}{showyear}[true]{}
%    \end{macrocode}
% The default is to show the year.
%    \begin{macrocode}
\DTMsetbool{finnish}{showyear}{true}
%    \end{macrocode}
%
% Define the "finnish" style.
%    \begin{macrocode}
\DTMnewstyle
 {finnish}% label
 {% date style
   \renewcommand*\DTMdisplaydate[4]{%
%    \end{macrocode}
% v1.1 separated partitive case from month names
% and added support for abbreviations and day of week
%\changes{1.1}{2016-03-29}{separated partitive case from month names
% and added support for abbreviations and day of week}
%    \begin{macrocode}
     \ifDTMshowdow
       \ifnum##4>-1
        \DTMifbool{finnish}{abbr}%
         {\DTMfinnishshortweekdayname{##4}}%
         {\DTMfinnishweekdayname{##4}}%
        \DTMfinnishdowdaysep
       \fi
     \fi
     \DTMifbool{finnish}{showdayofmonth}
     {%
       \DTMfinnishordinal{##3}\DTMfinnishdaymonthsep
       \DTMifbool{finnish}{abbr}%
         {\DTMfinnishshortmonthname{##2}}%
         {\DTMfinnishmonthname{##2}ta}%
     }%
     {%
       \DTMifbool{finnish}{abbr}%
         {\DTMfinnishshortmonthname{##2}}%
         {\DTMfinnishmonthname{##2}}%
     }%
     \DTMifbool{finnish}{showyear}%
     {%
       \DTMfinnishmonthyearsep
       \number##1 % space intended
     }%
     {}%
   }%
   \renewcommand*\DTMDisplaydate[4]{%
%    \end{macrocode}
% v1.1 separated partitive case from month names
% and added support for abbreviations and day of week
%\changes{1.1}{2016-03-29}{separated partitive case from month names
% and added support for abbreviations and day of week}
%    \begin{macrocode}
     \ifDTMshowdow
       \ifnum##4>-1
        \DTMifbool{finnish}{abbr}%
         {\DTMfinnishshortWeekdayname{##4}}%
         {\DTMfinnishWeekdayname{##4}}%
        \DTMfinnishdowdaysep
       \fi
       \DTMifbool{finnish}{showdayofmonth}
       {%
         \DTMfinnishordinal{##3}\DTMfinnishdaymonthsep
         \DTMifbool{finnish}{abbr}%
           {\DTMfinnishshortmonthname{##2}}%
           {\DTMfinnishmonthname{##2}ta}%
       }%
       {%
         \DTMifbool{finnish}{abbr}%
           {\DTMfinnishshortmonthname{##2}}%
           {\DTMfinnishmonthname{##2}}%
       }%
     \else
       \DTMifbool{finnish}{showdayofmonth}
       {%
         \DTMfinnishordinal{##3}\DTMfinnishdaymonthsep
         \DTMifbool{finnish}{abbr}%
            {\DTMfinnishshortmonthname{##2}}%
            {\DTMfinnishmonthname{##2}ta}%
       }%
       {%
         \DTMifbool{finnish}{abbr}%
            {\DTMfinnishshortMonthname{##2}}%
            {\DTMfinnishMonthname{##2}}%
       }%
     \fi
     \DTMifbool{finnish}{showyear}%
     {%
       \DTMfinnishmonthyearsep
       \number##1 % space intended
     }%
     {}%
   }%
 }%
 {% time style
   \renewcommand*\DTMdisplaytime[3]{%
      \number##1
      \DTMfinnishtimesep\DTMtwodigits{##2}%
      \ifDTMshowseconds\DTMfinnishtimesep\DTMtwodigits{##3}\fi
    }%
 }%
 {% zone style
   \DTMresetzones
   \DTMfinnishzonemaps
   \renewcommand*{\DTMdisplayzone}[2]{%
     \DTMifbool{finnish}{mapzone}%
     {\DTMusezonemapordefault{##1}{##2}}%
     {%
       \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
       \ifDTMshowzoneminutes\DTMfinnishtimesep\DTMtwodigits{##2}\fi
     }%
   }%
 }%
 {% full style
   \renewcommand*{\DTMdisplay}[9]{%
    \ifDTMshowdate
     \DTMdisplaydate{##1}{##2}{##3}{##4}%
     \DTMfinnishdatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
     \DTMfinnishtimezonesep
     \DTMdisplayzone{##8}{##9}%
    \fi
   }%
   \renewcommand*{\DTMDisplay}[9]{%
    \ifDTMshowdate
     \DTMDisplaydate{##1}{##2}{##3}{##4}%
     \DTMfinnishdatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
     \DTMfinnishtimezonesep
     \DTMdisplayzone{##8}{##9}%
    \fi
   }%
 }%
%    \end{macrocode}
%
% Define numeric style.
%    \begin{macrocode}
\DTMnewstyle
 {finnish-numeric}% label
 {% date style
    \renewcommand*\DTMdisplaydate[4]{%
      \DTMifbool{finnish}{showdayofmonth}%
      {%
        \number##3 % space intended
        \DTMfinnishdatesep
      }%
      {}%
      \number##2 % space intended
      \DTMifbool{finnish}{showyear}%
      {%
        \DTMfinnishdatesep
        \number##1 % space intended
      }%
      {}%
    }%
    \renewcommand*{\DTMDisplaydate}{\DTMdisplaydate}%
 }%
 {% time style
    \renewcommand*\DTMdisplaytime[3]{%
      \number##1
      \DTMfinnishtimesep\DTMtwodigits{##2}%
      \ifDTMshowseconds\DTMfinnishtimesep\DTMtwodigits{##3}\fi
    }%
 }%
 {% zone style
   \DTMresetzones
   \DTMfinnishzonemaps
   \renewcommand*{\DTMdisplayzone}[2]{%
     \DTMifbool{finnish}{mapzone}%
     {\DTMusezonemapordefault{##1}{##2}}%
     {%
       \ifnum##1<0\else+\fi\DTMtwodigits{##1}%
       \ifDTMshowzoneminutes\DTMfinnishtimesep\DTMtwodigits{##2}\fi
     }%
   }%
 }%
 {% full style
   \renewcommand*{\DTMdisplay}[9]{%
    \ifDTMshowdate
     \DTMdisplaydate{##1}{##2}{##3}{##4}%
     \DTMfinnishdatetimesep
    \fi
    \DTMdisplaytime{##5}{##6}{##7}%
    \ifDTMshowzone
     \DTMfinnishtimezonesep
     \DTMdisplayzone{##8}{##9}%
    \fi
   }%
   \renewcommand*{\DTMDisplay}{\DTMdisplay}%
 }
%    \end{macrocode}
%
%\begin{macro}{\DTMfinnishzonemaps}
% The time zone mappings are set through this command, which can be
% redefined if extra mappings are required or mappings need to be
% removed.
%    \begin{macrocode}
\newcommand*{\DTMfinnishzonemaps}{%
  \DTMdefzonemap{02}{00}{EET}%
  \DTMdefzonemap{03}{00}{EEST}%
}
%    \end{macrocode}
%\end{macro}

% Switch style according to the \opt{useregional} setting.
%    \begin{macrocode}
\DTMifcaseregional
{}% do nothing
{\DTMsetstyle{finnish}}
{\DTMsetstyle{finnish-numeric}}
%    \end{macrocode}
%
% Redefine \cs{datefinnish} (or \cs{date}\meta{dialect}) to prevent
% \sty{babel} from resetting \cs{today}. (For this to work,
% \sty{babel} must already have been loaded if it's required.)
%\changes{1.2}{2018-03-20}{fixed a bug with unwanted space}
%    \begin{macrocode}
\ifcsundef{date\CurrentTrackedDialect}
{%
  \ifundef\datefinnish
  {% do nothing
  }%
  {%
    \def\datefinnish{%
      \DTMifcaseregional
      {}% do nothing
      {\DTMsetstyle{finnish}}%
      {\DTMsetstyle{finnish-numeric}}%
    }%
  }%
}%
{%
  \csdef{date\CurrentTrackedDialect}{%
    \DTMifcaseregional
    {}% do nothing
    {\DTMsetstyle{finnish}}%
    {\DTMsetstyle{finnish-numeric}}%
  }%
}%
%    \end{macrocode}
%\iffalse
%    \begin{macrocode}
%</datetime2-finnish.ldf>
%    \end{macrocode}
%\fi
%\Finale
\endinput