¿Cómo puedo usar el comando de fecha para convertir algo como "lunes semana 40" en una fecha ISO?
Estoy jugando con algo como esto:
date --date='monday week 40' +'%Y-%m-%d'
Y la fecha que estoy buscando sería 2011-10-03.
Pero mi problema es que esta cadena de fecha no es válida, por lo que necesito otro enfoque para resolver este problema.
/Gracias
%V
secuencia de formato utilizada por 'usuario desconocido' informa el número de semana de ISO.Respuestas:
Realmente feo y probablemente solo funciona con GNU
date
:Probado solo para su ejemplo del 3 de octubre, puede fallar en algunos otros casos.
Actualización : si tiene una configuración regional no inglesa, debe especificar el resultado de la fecha interna para poder trabajar. (Y% F solo es AAAA-MM-DD).
fuente
Un enfoque alternativo:
fuente
date +%V
retornos41
), entonces el--date
valor del parámetro será+-1weeks last monday
, que en realidad es hace quince días, no hace 7 días.date -d 'last monday'
. Regresará ayer. ¿Qué crees que habría dicho si lo hubieras ejecutado ayer?OK, aquí está mi intento. Roba ideas de las otras respuestas e intenta hacer que la lógica sea más fácil de seguir. Esto se basa en el sistema ISO 8601, por lo que no será correcto si vives en países como EE. UU. O Canadá, pero debería ser fácilmente ajustable para esos países.
fuente