So schwer ist die Berechnung eigentlich nicht. Man muss ja nur die Jahre voneinander abziehen und mit 12 multiplizieren und die Monate voneinander abziehen. Außerdem muss man noch prüfen, ob zwischen dem Starttag und dem Endtag überhaupt ein voller Monat liegt und zwischen dem Startmonat und dem Endmonat ein volles Jahr:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{scrbase}
\makeatletter
\newcommand*{\monthdist}[2]{%
\begingroup
\splitisodate{#1}\relax
\@tempcnta\year
\@tempcntb\month
\count@=\day
\splitisodate{#2}\relax
\ifnum \@tempcntb>\month \advance\year\m@ne\fi
\ifnum \count@>\day \advance\month\m@ne\fi
\advance\month-\@tempcntb
\advance\year-\@tempcnta
\advance\month\numexpr \year*12\relax
\the\month
\endgroup
}
\newcommand*{\splitisodate}[1]{\expandafter\@splitisodate#1---\@nil}%
\newcommand*{\@splitisodate}{}
\def\@splitisodate#1-#2-#3-#4\@nil{%
\IfArgIsEmpty{#1}{\year=0}{\year=#1}%
\IfArgIsEmpty{#2}{\month=1}{\month=#2}%
\IfArgIsEmpty{#3}{\day=1}{\day=#3}%
}
\makeatother
\newcommand*{\monthtillnow}[1]{%
\begingroup
\edef\isotoday{\the\year-\the\month-\the\day}%
\monthdist{2015-2}{\isotoday}%
\endgroup
}
\begin{document}
\begin{tabular}{llr}
Von & Bis & Monate \\
\hline
10. Februar 2017 & 11. Februar 2017 & \monthdist{2017-2-10}{2017-2-11} \\
10. Februar 2017 & 11. März 2017 & \monthdist{2017-2-10}{2017-3-11} \\
11. Februar 2016 & 10. Februar 2017 & \monthdist{2016-2-11}{2017-2-10} \\
Februar 2015 & 16. September 2017 & \monthdist{2015-2}{2017-9-16} \\
Februar 2015 & heute & \monthtillnow{2015-2} \\
\end{tabular}
\end{document}
![alt text][1]
Mit der Distanz in Tagen wäre es deutlich schwieriger, weil man dort Schaltjahre berücksichtigen müsste. Das ist bei der Distanz in Monaten aber nicht notwendig.
Wie im Beispiel zu sehen, muss bei `\monthdist` zuerst das Startdatum in ISO-Schreibweise angegeben werden und dann das Enddatum. Für das Zerlegen des ISO-Datums werden in `\splitisodate` die normalen Zähler für Jahr, Monat und Tag verwendet. Das setzt also genau genommen das aktuelle Datum auf das angegebene. Deshalb wird in `\monthdist` mit `\begingroup` und `\endgroup` eine Gruppe aufgespannt. So bleibt diese Änderung auf `\monthdist` beschränkt. Daher können auch unbesorgt `\@tempcnta`, `\@tempcntb` und `\count@` zum Zwischenspeichern des aufgeteilten Startdatums verwendet werden. `\m@ne` ist übrigens -1, aber im Gegensatz zu -1 nur ein Token.
[1]: http://texwelt.de/wissen/upfiles/test_20170921_085356.pnghttp://texwelt.de/wissen/upfiles/test_20170921_091023.png