2011-01-13 19 views

Respuesta

6

Usted puede hacer algunas aritmética fecha:

DATE=01/02/2010 
echo $((($(date +%s) - $(date -d "$DATE" +%s)) /(24 * 60 * 60))) 
+1

Vale la pena mencionar aquí que la versión de la fecha en AIX no tiene una opción -d, por lo que aunque el PO estaba pidiendo una solución Linux, esto no sería una cruzada solución de plataforma. – frankster

+0

En OSX las páginas man dicen: '-d dst Establece el valor del kernel para el horario de verano. – andsens

4

Convierte la fecha y ahora en segundos desde la época, restar, dividir por el número de segundos en un día:

#!/bin/bash 

((a = `date -d "Wed Jan 12 02:33:22 PST 2011" +%s`)) 
((b = `date +%s`)) 
echo $(((b-a)/(60*60*24))) 
+5

En una nota lateral, puedes hacer fechas relativas en' date' directamente: 'date --date =" 2011-01- 13 + 5 días "' – l0b0

+0

¡Aseado! :) Gracias. Pero eso solo es útil si está apuntando a un número específico de días diferentes de una fecha determinada, sin encontrar la diferencia entre dos fechas determinadas. – sarnold

+1

No es necesario hacer una asignación simple dentro de doble paréntesis (sin embargo, no podría tener espacios alrededor del signo igual). Sin embargo, debe usar '$()' para la sustitución de comandos en lugar de usar los backticks. –

2

Uso fecha en sí mismo como valor de fecha para la fecha. Ejemplo hace 5 días:

date -d "`date`-5days" 
+1

No es necesario abrir una subshell: 'date -d" -5days "' es lo mismo :) – neurino