Possible Duplicate:
How do I split a date?

Does anyone know how to extract year from date in parameter of own macro?



where #1 contain either date already in format yyyy or in format dd.mm.yyyy, which \themacro would convert to plain yyyy...

I hope I made myself clear, well, simply speaking, I just need to extract the year from date (if extraction is necessary).


user1189687 already proposed a solution that I think is better, but since I already begun to write this, here is if you want a plain tex solution :

The point here is to recognize that you are in the first case or in the other. It is trivial to do if you know the format of your input. But here, apparently you don't.

So what I would do would be :


\def\@themacro #1.#2\end@themacro{%
\def\themacro #1 {%
  \@themacro#1.\relax\end@themacro% get day or year
      \GenericError{}{Wrong date format}{}{}% Manage the error
    \expandafter\@themacro\@temprem\end@themacro% get month
      \GenericError{}{Wrong date format}{}{}% Manage the Error
      \expandafter\@themacro\@temprem\end@themacro% get year
        \GenericError{}{Wrong date format}{}{}% Manage the Error

The advantage of this solution is that you detect incorect syntax and can have a fallback or throw an error, as you wish.

Oh, I almost forgot ... You of course get the year as the replacement text of \year.

In case they exist, you also can get \day and \month.

  • Wow, I just went back to my answer and realized it was totally broken. I'm not really sure why you accepted it in that state, but anyway, now it is fixed and properly working. – Samuel Albert Aug 23 '12 at 22:21

Try \StrRight in the xstring package:






with result:

enter image description here

  • Thank you for your answer. This truly is simple, clear and elegant solution. Though, I was originally looking for vanilla plainTeX solution. Still, I do deeply appreciate your help and click to button up :-) – mathemage Aug 23 '12 at 20:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.