The datenumber
package allows you to calculate date differences and return the difference as number of days. You still need to make years and month out of it.
Starting of the example \daydifftoday
in the manual:
\documentclass{article}
\usepackage{datenumber}
\newcounter{dateone}
\newcounter{datetwo}
\newcommand{\difftoday}[3]{%
\setmydatenumber{dateone}{\the\year}{\the\month}{\the\day}%
\setmydatenumber{datetwo}{#1}{#2}{#3}%
\addtocounter{datetwo}{-\thedateone}%
\the\numexpr-\thedatetwo/365\relax\space year(s),
\the\numexpr(-\thedatetwo - (-\thedatetwo/365)*365)/30\relax\space month(s)
}
\begin{document}
\difftoday{2010}{02}{01}
\end{document}
This code could be further refined to check if the difference is less than a year, one year or more than one year to display "year(s)" accordantly. The same counts for the month:
\documentclass{article}
\usepackage{datenumber}
\usepackage{calc}
\newcounter{datetoday}
\newcounter{diffyears}
\newcounter{diffmonths}
\newcounter{diffdays}
\newcommand{\difftoday}[3]{%
\setmydatenumber{datetoday}{\the\year}{\the\month}{\the\day}%
\setmydatenumber{diffdays}{#1}{#2}{#3}%
\addtocounter{diffdays}{-\thedatetoday}%
\ifnum\value{diffdays}>0
\def\diffbefore{in }%
\def\diffafter{}%
\else
\def\diffbefore{}%
\def\diffafter{ago}%
\setcounter{diffdays}{-\value{diffdays}}%
\fi
\setcounter{diffyears}{\value{diffdays}/365}%
\setcounter{diffdays}{\value{diffdays}-365*\value{diffyears}}%
\setcounter{diffmonths}{\value{diffdays}/30}%
\setcounter{diffdays}{\value{diffdays}-30*\value{diffmonths}}%
%
\diffbefore
\ifnum\value{diffyears}=0
\else
\ifnum\value{diffyears}>1
\thediffyears\space years,
\else
\thediffyears\space year,
\fi
\fi
\ifnum\value{diffmonths}=0
\else
\ifnum\value{diffmonths}>1
\thediffmonths\space months
\else
\thediffmonths\space month
\fi
\fi
\diffafter
}
\begin{document}
\difftoday{2011}{02}{01}
\difftoday{2010}{02}{01}
\difftoday{2009}{02}{01}
\difftoday{2009}{01}{01}
\difftoday{2012}{02}{01}
\difftoday{2012}{12}{01}
\end{document}
This gives:
1 month ago
1 year, 1 month ago
2 years, 1 month ago
2 years, 2 months ago
in 10 months
in 1 year, 8 months
This should be fine when the accuracy is months (which are taken as 30 days each). Exact days would require to take the different number of days per month and leap years into account.
Note the \diffbefore
and \diffafter
macros. You can adjust them to your liking and/or language.
By way of demonstration, \maketitle
behaves differently depending on the class the document uses. So...
book
class with \maketitle
\documentclass{book}
\title{The Triangulation of Titling Data in
Non-Linear Gaussian Fashion via $\rho$ Series}
\date{October 31, 475}
\author{John Doe\\ Magic Department, Richard Miles University
\and Richard Row, \LaTeX\ Academy}
\date{April 4,2013}
\usepackage{kantlipsum}
\begin{document}
\maketitle
\kant[1]
\end{document}
report
with \maketitle
produces a similar result.
article
class with \maketitle
\documentclass{article}
\title{The Triangulation of Titling Data in
Non-Linear Gaussian Fashion via $\rho$ Series}
\date{October 31, 475}
\author{John Doe\\ Magic Department, Richard Miles University
\and Richard Row, \LaTeX\ Academy}
\date{April 4,2013}
\usepackage{kantlipsum}
\begin{document}
\maketitle
\kant[1]
\end{document}
article
class with titlepage
\documentclass{report}
\title{The Triangulation of Titling Data in
Non-Linear Gaussian Fashion via $\rho$ Series}
\date{October 31, 475}
\author{John Doe\\ Magic Department, Richard Miles University
\and Richard Row, \LaTeX\ Academy}
\date{April 4,2013}
\usepackage{kantlipsum}
\begin{document}
\begin{titlepage}
\maketitle
\end{titlepage}
\kant[1]
\end{document}
Note the use of \maketitle
within the titlepage
environment. This is because titlepage
just gives you an empty page to design as you will. If you don't put anything in it, it is just an empty page.
book
class with titlepage
produces similar output.
An easier way to achieve the same result given that you don't really want to customise the layout of the title would be to just use \maketitle
with the book
class (as above) or, in article
, to use the titlepage
option for the class:
\documentclass[titlepage]{article}
\title{The Triangulation of Titling Data in
Non-Linear Gaussian Fashion via $\rho$ Series}
\date{October 31, 475}
\author{John Doe\\ Magic Department, Richard Miles University
\and Richard Row, \LaTeX\ Academy}
\date{April 4,2013}
\usepackage{kantlipsum}
\begin{document}
\maketitle
\kant[1]
\end{document}
Best Answer
Under the default document classes (including
article
), you can just add another date to\date
: