With some conditionals on the current day-of-the-month, advdate can be used to retrieve the date you're looking for:

\documentclass{article}
\usepackage{advdate}
\newcommand{\nextfifteenth}[1][\relax]{{%
\ifx\relax#1\relax\else\SetDate[#1]\fi% If a date was specified
\today---%
\ifnum\day<15\else% \day >= 15
\AdvMonth{1}% Move to next month
\fi
\ThisDay{15}% Day will always be 15th
\today
}}
\begin{document}
\today
\nextfifteenth
\nextfifteenth[15/12/2015]
\nextfifteenth[12/12/2012]
\today
\end{document}
You could also supply the date in a textual format 12 December 2012 (say) using the following:
\documentclass{article}
\usepackage{advdate,xparse}
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\StrMonthToNum}{ m }
{
\str_case:nnF { #1 } {
{ January } { 1 }
{ February } { 2 }
{ March } { 3 }
{ April } { 4 }
{ May } { 5 }
{ June } { 6 }
{ July } { 7 }
{ August } { 8 }
{ September } { 9 }
{ October } { 10 }
{ November } { 11 }
{ December } { 12 }
} { 12 } % Wrong month, defaults to December/12
}
\ExplSyntaxOff
\def\formattextdate#1 #2 #3\relax{%
\ThisDay{#1}% Set day
\expandafter\ThisMonth\expandafter{\StrMonthToNum{#2}}% Set month
\ThisYear{#3}% Set year
}
\newcommand{\nextfifteenth}[1][\relax]{{%
\ifx\relax#1\relax\else
\expandafter\formattextdate #1\relax%
\fi% If a date was specified
\today---%
\ifnum\day<15\else% \day >= 15
\AdvMonth{1}% Move to next month
\fi
\ThisDay{15}% Day will always be 15th
\today
}}
\begin{document}
\today
\nextfifteenth
\nextfifteenth[15 December 2015]
\nextfifteenth[12 December 2012]
\today
\end{document}
shell-escapean option? – Clément Nov 23 '15 at 14:51Nov 23 2015, verbatim), or do you use (say)\today? – Werner Nov 23 '15 at 15:40\todaythere – Joe Nov 24 '15 at 04:02