Estoy interesado en generar una representación del trimestre actual, así como el trimestre del mes anterior.
Si hoy es el 1 de enero de 2012, me gustaría obtener
2012q1
y
2011q4
como las respectivas salidas.
command-line
date
smokris
fuente
fuente

%mda09qué bash intenta interpretar como octal debido al 0 inicial, por lo que arroja un error que dice09: value too great for base (error token is "09"). Esto se puede solucionar deshabilitando el relleno 0 cambiando%ma%-m.Usa mis dateutils :
Las banderas
%qy%Qson específicas de dateutils y devuelven el trimestre como número o en el formularioQ<NUMBER>.fuente
dconv now -f%Y%Q | tr Q qsi realmente necesitas que Q esté en minúsculas. (PD: estamos empacando esto en Fedora condateel prefijo en lugar ded"dateconv".)Todas las soluciones que se dividen entre cuatro fallan, por ejemplo noviembre:
Las matemáticas correctas serían:
Y como tal, el trimestre del mes actual y anterior sería:
Son solo doce valores para verificar, realmente ...
fuente
Probablemente, no hay una solución directa.
Podrías
awkevitar tantas contratiempos.Una
perlsolución sería más limpio peroperlyDateTimeson un requisito previo pesado.fuente
datedos veces.Divida el formato con fecha, calcule con awk, formatee con printf:
Solo fecha y fiesta:
fuente
2012q0que es incorrecta.Una alternativa, más como curiosidad. Si GNU
awkestá involucrado,dateno es necesario:fuente
Llame
datepara recuperar el año y mes actuales, y haga el resto con la aritmética en el shell.fuente
Trimestre del año para este mes
Año-Trimestre para ayer-mes
fuente
Matemáticas básicas para este trimestre y el trimestre del mes pasado:
El script usa las siguientes partes:
fuente
Ahora existe el
%qformato para mostrar esta información.Del registro de lanzamiento de coreutils-8.26 del 30 de noviembre de 2016:
¡Y sí, funciona!
fuente
Si desea el trimestre fiscal de 13 semanas que se basa en el calendario semanal ISO, entonces el nuevo práctico% q no va a funcionar, lamentablemente. Aquí hay una versión de la solución sin fecha de @manatwork con awk / strftime.
El último pequeño bit ternario maneja los años de la semana de salto ISO donde el último trimestre tiene 14 semanas.
fuente