Posible duplicado:
¿Cómo divido una cita?
¿Alguien sabe cómo extraer el año a partir de la fecha en el parámetro de su propia macro?
A saber,
\themacro#1{...}
donde #1
contiene la fecha que ya está en formato yyyy
o en formato dd.mm.yyyy
, que \themacro
se convertiría a simple yyyy
...
Espero haber sido claro, bueno, en pocas palabras, solo necesito extraer el año a partir de la fecha (si la extracción es necesaria).
Respuesta1
user1189687 ya propuso una solución que creo que es mejor, pero como ya comencé a escribir esto, aquí está si desea una solución de texto simple:
El punto aquí es reconocer que estás en el primer caso o en el otro. Es trivial hacerlo si conoce el formato de su entrada. Pero aquí, aparentemente no es así.
Entonces lo que haría sería:
\makeatletter
\def\@themacro #1.#2\end@themacro{%
\def\@tempyr{#1}%
\def\@temprem{#2}%
}%
%
\def\themacro #1 {%
\let\day\relax%
\let\month\relax%
\let\year\relax%
\let\@tempyr\relax%
\let\@temprem\relax%
\@themacro#1.\relax\end@themacro% get day or year
\if\relax\@temprem\relax%
\if\relax\@tempyr\relax%
\GenericError{}{Wrong date format}{}{}% Manage the error
\else%
\edef\year{\expandafter\noexpand\@tempyr}%
\fi%
\else%
\edef\day{\expandafter\noexpand\@tempyr}%
\expandafter\@themacro\@temprem\end@themacro% get month
\if\relax\@temprem\relax%
\GenericError{}{Wrong date format}{}{}% Manage the Error
\else%
\edef\month{\expandafter\noexpand\@tempyr}%
\expandafter\@themacro\@temprem\end@themacro% get year
\if\relax\@temprem\relax%
\edef\year{\expandafter\noexpand\@tempyr}%
\else%
\GenericError{}{Wrong date format}{}{}% Manage the Error
\fi%
\fi%
\fi%
}%
\makeatother%
La ventaja de esta solución es que detecta una sintaxis incorrecta y puede tener un respaldo o generar un error, según lo desee.
Oh, casi lo olvido... Por supuesto, obtienes el año como texto de reemplazo de \year
.
En caso de que existan, también puedes obtener \day
y \month
.
Respuesta2
Pruebe \StrRight
en el xstring
paquete:
\documentclass{article}
\usepackage{xstring}
\def\getYear#1{\StrRight{#1}{4}}
\begin{document}
\noindent\getYear{12.12.2012}\\
\getYear{2012}
\end{document}
con resultado: